为什么前置++比后置++的效率高

来源:互联网 发布:手机cad软件下载 编辑:程序博客网 时间:2024/06/09 16:04

仅对类类型而言,请看代码:

class A{public:A(){cout << "A的构造函数" << endl;}A(const A &a){m_i = a.m_i;cout << "A的拷贝构造函数" << endl;}~A(){cout << "A的析构函数" << endl;}A& operator++()//前置版本prefix{++m_i;                        return *this;}const A operator ++(int)//后置版本postfix{A old (*this);            ++(*this);                       return old;}private:int m_i;};int _tmain(int argc, _TCHAR* argv[]){A a;a++;return 0;}
输出:

A的构造函数A的拷贝构造函数A的拷贝构造函数A的析构函数A的析构函数A的析构函数请按任意键继续. . .
而:

int _tmain(int argc, _TCHAR* argv[]){A a;++a;return 0;}
输出:

A的构造函数A的析构函数请按任意键继续. . .
前置是后置效率的三倍,且增加了一次调用栈和一个入参。




1 0