クラスがオーバーロードする場合operator+
、オブジェクトに対して割り当てを行わないため、constとして宣言する必要がありますか?また、私はそれを知ってoperator=
おりoperator+=
、割り当てが行われているので参照を返します。しかし、どうoperator+
ですか?それを実装するとき、現在のオブジェクトのコピーを作成し、それに指定されたオブジェクトを追加して、その値を返す必要がありますか?
これが私が持っているものです:
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+
ですか?または、問題や望ましくない/未定義の動作を引き起こす可能性のある見落としているものがありますか?