前置++和后置++
class A {
private:
int a;
public:
A& operator++() { //前置++ 引用:存在的变量的别名,不能够返回一个函数栈上的对象的引用
++a;
return *this;
}
A operator++(int) { //后置++
A a = *this; //局部变量:随着函数调用结束而被销毁(因为函数栈被回收了)
++*this;
returnn a;
}
}
因为后置++在实现的时候构造了一个临时对象,临时对象的构造和销毁都需要消耗一定的系统资源,所以后置++的效率比前置++的效率低。