C# · 12月 20, 2021

C++ 如何重载前置++和后置++运算符

注意一下几点: 

1、前置++重载时没有参数,而后置++重载时有参数。不会使用其参数,仅仅是区分用。可以理解为前置++后面有参数了,所以不需要参数 

2、前置++需要返回引用,因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。而后置++返回的不是引用,所以不能进行连续使用。

3.后置运算符返回的值是temp,需要注意。因为是后加。

实现代码如下:

#include

using namespace std;

class point{

public:

point(int a,int b):x(a),y(b){}

point& operator++(){//前置运算符,需要引用返回,不需要参数。返回自增后的值,且返回的是一个左值

x++;

y++;

return *this;

}

point operator++(int){//后置++,不需要引用返回,需要参数区分。返回自增前的值,且返回的是一个右值

point temp(x,y);

x++;

y++;

//cout<<"x1 = "<<temp.x<<",y1 = "<<temp.y<<endl;

return temp;

}

void show(){

cout<<"x = "<<x<<",y = "<<y<<endl;

}

private:

int x;

int y;

};

int main(){

point p(2,3);

p.show();

p++;

p.show();

++p;

p.show();

return 0;

}

运行结果如下: