- 如果只重载了前自增运算符,那么后自增运算符会与重载后的前自增运算符绑定,使两者的行为相同。如果想避免这种情况,在重载自增运算符时应该同时重载前自增运算符和后自增运算符。
- 为了区分前自增运算符和后自增运算符的重载函数,后自增运算符的重载函数的参数列表中需要增加一个int类型的参数,在使用中完全可以忽略这个参数,编译器会对其做特殊处理。
- 前自增运算符和后自增运算符的重载函数在实现上也有区别。前自增运算符的重载函数先自增,然后返回对象自身的引用;后自增运算符先创建一个对象的副本,然后使用前自增操作调用前自增运算符的重载函数,最后返回对象的副本。
class Step{
private:
int num;
public:
Step(int num){this->num=num;}
int getStep(){return num;}
Step& operator++();
Step operator++(int);
};
Step& Step::operator++(){
num++;
return *this;
}
Step Step::opearator++(int){
Step temp=*this;
++(*this);
return temp;
}