版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ziyuzhao123/article/details/39136993
在读源码的时候经常遇到自增操作,一般都采用++i,我想这个可定是有原因的。这就涉及到它们的效率问题。
关于i++和++i的效率比较,一个简洁的回答:
在内建数据类型的情况下,效率没有区别。
在自定义数据类型的情况下,++i的效率较高。
分析:
自定义数据类型的情况下:
++i返回对象的引用;
i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。
如果对于C++里的类,那++i和i++两个是运算符重载,i++在实现的时候,产生了一个local object,退出时还要销毁它。
class INT;
//++i 的版本
INT INT::operator++()
{
*this=*this+1;
return *this;
}
//i++ 的版本
const INT INT::operator ++(int)
{
INT oldvalue=*this;
*this=*this+1;
return oldvalue
}
所以从效率上来说++i比i++来的更有效率。