C++自增运算符和自减运算符的重载
自增运算符“++”和自减运算符“- -”各自都有两个版本(前置 和 后置), 前置和后置指的是把运算符++(或- -)放在操作数前和后,那么我们在重载运算符的时候,怎么区分这前置和后置两个版本呢?
- 如果按我们正常的重载操作符,(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载的是
前置版本
,即++x - 如果我们需要重载
后置版本
,即- -x,那么我们需要在重载时加入一个占位参数
,用来告诉编译器,我们希望重载的是后置版本
,这个占位参数不需要给出实际值.
具体方法看下面给出的例子。
class Interger{
public:
int value = 0;
//前置版本, ++x
int operator ++(){
this->value++;
return this->value;
}
//后置版本, x++
int operator ++(int){ //重载时设置一个占位参数int即可,代表后置版本
int tmp = this->value;
this->value++;
return tmp;
}
};
int main(){
Interger myInt;
cout << myInt.value << endl; //output 0
cout << myInt++ << endl; //output 0
cout << myInt.value << endl; // output 1
cout << ++myInt;// output 2
}
//为了让代码更简洁些,就没有重载输出运算符了(自己偷懒~
以上就是我个人的一些简单的理解,希望能帮助到大家,如果有问题或者错误,欢迎大家在评论区指出,如果看到一定会回复或者及时改正,谢谢朋友们~ 参考链接:[C++学习笔记(5)----重载自增自减运算符](https://www.cnblogs.com/dongling/p/5737716.html)