假设我定义这个结构:运算符重载在结构
struct Point {
double x, y;
};
我怎样才能重载+
操作,这样,申报,
Point a, b, c;
double k;
表达
c = a + b;
产量
c.x = a.x + b.x;
c.y = a.y + b.y;
和表达
c = a + k;
产生
c.x = a.x + k;
c.y = a.y + k; // ?
是否适用于后者的情况下可交换的属性保持?也就是说,c = a + k;
和c = k + a;
必须分开处理吗?
+1对于耐克的态度 – fredoverflow
为什么我们必须将Point参数声明为常量? – Raptor
@JosuéMolina所以你可以通过临时工给他们;你不能用临时的初始化非const引用。鉴于'Point'的简单性,通过值直接传递它们没有问题,而不是通过引用(在这种情况下,它们是否是'const'或不是无关紧要的)。但是无处不在的约定是通过引用const来传递类的类型,当约定真正无处不在时,并且不会导致其他问题时,最好遵守它们,如果只是为了让人们不要问你为什么要这样做不同。 –