當一個類重載operator+
時,它是否應該被聲明爲const,因爲它不會對該對象進行任何賦值? 此外,我知道operator=
和operator+=
返回一個參考,因爲進行了分配。但是,operator+
呢?當我實現它時,我應該複製當前對象,將給定的對象添加到該對象,並返回該值?C++ - 我應該使`運算符+`常量?它是否會返回一個參考?
以下是我有:
class Point
{
public:
int x, int y;
Point& operator += (const Point& other) {
X += other.x;
Y += other.y;
return *this;
}
// The above seems pretty straightforward to me, but what about this?:
Point operator + (const Point& other) const { // Should this be const?
Point copy;
copy.x = x + other.x;
copy.y = y + other.y;
return copy;
}
};
這是一個正確實施operator+
的?或者是否有我忽視的可能會導致麻煩或不必要的/未定義的行爲?
運算符重載的很多細節可以在這裏找到:http://stackoverflow.com/questions/4421706/operator-overloading – chris