Frage zu Rückgabewerten Memberfunktion
-
Hi zusammen,
ich habe folgende Operatorenüberladung (als Memberfunktion) gegeben:
Zahlen& operator += (Zahlen op2) { this->z1 += op2.z1; this->z2 += op2.z2; return *this; }Nun rufe ich in der main folgendes auf:
A += B (A und B sind Objekte der Klasse Zahlen)
Welchen Zweck dient denn hier eigentlich der Return Wert? In der Main rufe ich ja einfach den Operator auf, aber ich benötige ja keinen return Wert?
Noch eine Frage:
Was wird denn hier genau zurückgeliefert? Laut MEthodenkopf wird ja Zahlen& zurückgeliefert. (Sollte ja eine Referenz sein)
Liefert return *this nicht einfach einen dereferenzierten Zeiger, also einen int Wert zurück??Danke!
Gruß
-
Du gibst hier eine Referenz auf das Objekt selbst zurück. Wenn du einen Zeiger dereferenzierst, erhältst du immer eine Referenz. Und die referenz wird zurückgegeben, damit folgendes möglich ist:
a += b += c += d ... ;
-
Zu 1: Es gibt schon aus C die Möglichkeit, Zuweisungen miteinander zu verketten (ala "a=b=c=4711;"). Solche Möglichkeiten eröffnen sich auch in C++, wenn du in den Operatoren einen Rückgabewert angibst.
Zu 2: Ja, das ist eine Referenz. Aber *this ist mehr als ein einfacher Wert, sondern ein komplettes Objekt, das irgendwo im Speicher liegt. Und dort gibst du dem Anwender eine Referenz auf genau dieses Objekt, mit der er weiterarbeiten kann, wen er will.
PS: Übrigens würde ich den Parameter auch als Referenz übergeben
