c++运算符重载。。。。。。

class point
{
private:
int x,y;
public:
point operator +=(point &p);
};
point point::operator +=(point &p)
{
x+=p.x; //这里
y+=p.y;
return *this;
}

这里的x+=p.x;和y+=p.y; 怎么理解啊

其实操作符重载一般的原则是不改变该操作符原有的语义,因此比如a += b中,假设a和b都是int类型, += 操作符干的事情就是将b的值加到a上,也就相当于a = a + b; 那么将a, b换成point对象之后,对应的,+=操作符应该将b中所有的成员变量加到a中对应的成员变量上。代码中所写的point operator +=(point &p);其实是在 a += p;(其中a, p均为point类的实例)的时候进行调用的,x += p.x;和y += p.y其实就是把p的x值加到a的x值上,把p的y值加到a的y值上。

x,y分别加上p的x,y的值

是:x = x+p.x和y=y+p.y的简写。