仅对类类型而言,请看代码:
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的析构函数
请按任意键继续. . .
前置是后置效率的三倍,且增加了一次调用栈和一个入参。