return *this <--- warum?



  • ich hab hier folgende Memberfunktion der Klasse Mitarbeiter

    const Mitarbeiter& Mitarbeiter::aelter( const Mitarbeiter& mitarb ) const
    {
    	if(this->getAlter() > mitarb.getAlter())
    		return *this;
    	else
    		return mitarb;
    

    mir ist klar: die Funktion gibt eine Referenz zurück die constant ist

    return mitarb;
    

    ist klar, mitarb wurde als referenz übergeben und wird weitergereicht

    return *this;
    

    da liegt mein Problem...warum derefenzieren?



  • Weil die Referenz vom Typ Mitarbeiter ist und kein Zeiger auf einen Mitarbeiter,
    daher muss dereferenziert werden, damit die Referenz auf das Objekt vom Typ
    Mitarbeiter verweisen kann.



  • Weil this ein Zeiger auf das aktuelle Objekt ist, also vom Typ Mitarbeiter *
    Du willst aber ein const Mitarbeiter & zurückgeben, folglich musst du den Zeiger erst dereferenzieren!



  • aha...hier noch ne kleine Frage fürs Verständnis:

    int var;
    int *z;
    
    z = &var;      //z zeigt auf var
    
    int &refVonVar = var;      //ist das das gleiche wie? --> int &refVonVar = *z;
    


  • ja


Anmelden zum Antworten