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 doch

    const 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.


Anmelden zum Antworten