C++运算符的重载如何实现p=p1+p2+p3

2025-04-05 02:58:35
推荐回答(1个)
回答1:

参考下面代码
#include
using namespace std;

class Point {
private :
int x,y;
public :
Point(int a = 0, int b = 0);
Point &operator+(const Point &);
void PrintPoint();
//friend Point operator+(const Point &, const Point &);
};

Point::Point(int a, int b) {
x = a;
y = b;
}

Point &Point::operator+(const Point &p) {
x += p.x;
y += p.y;
return *this;
}

void Point::PrintPoint() {
cout << "(" << x << "," << y << ")\n";
}

/*
Point operator+(const Point& p1, const Point& p2)
{
Point temp;
temp.x = p1.x +p2.x;
temp.y = p1.y +p2.y;
return temp;
}
*/

int main() {
Point p1(10, 10), p2(20, 30), p3(50,70), p;
Point pp1(10, 10), pp2(20, 30), pp3(50,70), pp;
p = p1 +p2 + p3;
pp = pp1.operator+(pp2.operator+(pp3)); // 先做pp2 -+pp3,再用pp1加上这个差
p.PrintPoint();
pp.PrintPoint();
return 0;
}