Wenn eine Klasse operator+
überlädt, sollte es const deklariert werden, da es keine Zuweisung auf dem Objekt tut? Ich weiß auch, dass operator=
und 10 eine Referenz zurückgeben, weil eine Zuweisung vorgenommen wird. Aber was ist mit operator+
? Wenn ich es implementiere, sollte ich eine Kopie des aktuellen Objekts machen, das gegebene Objekt zu diesem hinzufügen und diesen Wert zurückgeben?C++ - Soll ich `operator +` const machen? Und gibt es eine Referenz zurück?
Hier ist, was ich habe:
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;
}
};
Ist dies eine korrekte Umsetzung der operator+
? Oder gibt es etwas, das ich übersehe, das Probleme oder unerwünschtes/undefiniertes Verhalten verursachen könnte?
Viele Details der Operator Überladung können hier gefunden werden: http://StackOverflow.com/Questions/4421706/Operator-Overloading – chris