クラスがoperator+
をオーバーロードするとき、オブジェクトに代入を行わないのでconst宣言する必要がありますか? また、operator=
とoperator+=
は割り当てが行われているため参照を返します。しかし、operator+
はどうですか?実装する際には、現在のオブジェクトのコピーを作成し、そのオブジェクトをそのオブジェクトに追加してその値を返す必要があります。C++ - `operator +` constを作るべきですか?それは参照を返しますか?
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