Rückgabetyp des Zuweisungsoperators
-
Folgende Unklarheit:
Ich habe mir ein paar Gedanken über den Rückgabetyp von operator= gemacht.
Die normale Benutzung erfolgt bekanntlich wie folgt:
Methodendeklaration: Typ &operator=(const Typ &source); Methodendefinition: Typ &Beispielklasse::operator=(const Typ &source) { //operationen... return (*this); }Ich frage mich allerdings, warum der Rückgabetyp nicht als const deklariert wird(werden kann).
Denn die Benutzung von beispielobjekt1 = beispielobjekt2 = beispielobjekt3;
Währe dadurch in keinem Fall eingeschränkt.Vielleicht hilft mir jemand auf die Sprünge, ich komme selber nicht auf den Nachteil, der gegebenenfalls gegen ein const spricht.
-
Warum sollte man ihn nicht const deklarieren können? Das ist dir als Programmierer doch freigestellt

-
warum ist den bsp1 = bsp2 = bsp3 eingeschränkt? funkzukliert doch alles wunderbar. bsp1 und 2 bekommen beide den wert von bsp3.
oder was meinst du mit eingeschränkt?
außerdem kann man dochconst typ &operator=(blabla);definieren.
-
Afaik ist im Standard freigestellt, was der operator= zurückgeben muß - T& ist nur der "übliche" Typ. (du könntest auch void verwenden, aber dann klappen Zuweisungsketten "A=B=C;" nicht mehr.
(btw gibt es theoretisch auch die Möglichkeit, die Zuweisungen neu zu klammern zu "(A=B)=C;" (der Sinn dahinter sei mal dahingestellt) - die funktionieren nicht mehr mit const T&)
-
Vielen dank, besonders an CStoll.
Genau so eine Antwort suchte ich.