假设我定义了这个结构:
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;
需要分别处理吗?
Point
的简单性,直接通过值传递没有问题,而不是通过引用(在这种情况下,它们是否为const
是无关紧要的)。但普遍的惯例是通过引用传递类类型,并且当惯例真正普遍并且不会引起其他问题时,最好遵循它们,即使只是让人们不会想知道为什么你做得不同。 - James Kanze