And*_*eas 3 c++ operator-overloading
假设我有一个课程点:
class Point {
int x, y;
public:
Point& operator+=(const Point &p) { x=p.x; y=p.y; return *this; }
};
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样称呼它:
Point p1;
p1 += Point(10,10);
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,同时仍然有参考作为参数?
Kon*_*lph 11
为什么我不能这样称呼它:
因为你忘了声明一个匹配的构造函数.除此之外,这个电话看起来很好.
(此外,你内部的代码operator +=是错误的:它会覆盖值而不是添加).
这是您需要的代码:
class Point {
int x,y;
public:
Point(int x=0,int y=0) : x(x), y(y) {}
Point& operator+=(const Point&p) {x+=p.x;y+=p.y;return *this;}
};
Run Code Online (Sandbox Code Playgroud)
正如康拉德指出的那样,你需要一个构造函数.您还需要在运算符重载中明确执行添加.