++i和i++哪个效率更高
转载:http://blog.chinaunix.net/uid-21843387-id-105857.html
答案:
在内建数据类型的情况下,效率没有区别;
在自定义数据类型的情况下,++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; }