探讨++i与i++哪个效率更高
答案:
在内建数据类型的情况下,效率没有区别;
在自定义数据类型的情况下,++i效率更高!
分析:
(自定义数据类型的情况下)
++i返回对象的引用;
i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。
(重载这两个运算符如下)
#include <iostream>
using namespace std;
class MyInterger{
public:
long m_data;
public:
MyInterger(long data):m_data(data){}
MyInterger & operator++(){
cout<<"Integer::operator++() called!"<<endl;
m_data++;
return *this;
}
MyInterger operator++(int){
cout<<"Integer::operator++(int) called!"<<endl;
MyInterger tmp = *this;
m_data++;
return tmp;
}
};
int main()
{
MyInterger a = 1;
a++;
++a;
return 0;
}