类运算符重载

Geo*_*Shg 1 c++ overloading class

这是一个非常基本的运算符过载问题.说我有这样的课......

class xy
{
    public:
    double x, y;
    XY(double X, double Y) { x = X; y = Y;}
    XY operator+(const XY & add) const {
        return XY(this->x + add.x, this->y + add.y);
    }
    XY & operator+=(const XY & add) const {?}
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望operator + = do做它应该做的事情(你知道,添加到x和y的当前值).运算符+和运算符+ =的代码不一样吗?

Let*_*_Be 5

它怎么可能一样?他们做不同的事情.

如果您不关心可以+=+运算符实现中使用的优化:

XY operator + (const XY& right) const
{
    XY left(*this);
    left += right;
    return left;
}
Run Code Online (Sandbox Code Playgroud)