2D Array-Klasse Rückgabe einer Referenz bei Zuweisung



  • Die Überladung kommt erst in späteren Kapiteln, weshalb dies hier noch verboten ist.

    Das heißt doch eigentlich, dass bei jedem Aufruf der Funktion die Referenz auch zurückgegeben wird oder? Entspricht das nicht auch einfach die Adresse der Instanz?



  • was ist das denn für ein buch ? erst werden klassen erklärt und später erst das überladen funktionen ? dieses konzept erschließt sich mir nicht so ganz.



  • vario-500 schrieb:

    was ist das denn für ein buch ? erst werden klassen erklärt und später erst das überladen funktionen ? dieses konzept erschließt sich mir nicht so ganz.

    Es geht um Operatorenüberladung. Da ist diese Reihenfolge schon korrekt :xmas1:



  • Edit: Hier stand Müll (s. u.)



  • Ich meine von *this



  • Ouh, ich war verwirrt, dachte das ist der andere Thread ⚠
    Sry!

    RaggyGandalf schrieb:

    Das heißt doch eigentlich, dass bei jedem Aufruf der Funktion die Referenz auch zurückgegeben wird oder? Entspricht das nicht auch einfach die Adresse der Instanz?

    Ich verstehe nicht so richtig, was du meinst.



  • Wenn ich eine Methode mit dem Rückgabetyp Array2D& <name>(parameter) habe, übergibt sie nicht einfach beim Aufruf die Adresse? In diesem Fall übergibt assign doch einfach die Adresse von this oder nicht?



  • RaggyGandalf schrieb:

    Wenn ich eine Methode mit dem Rückgabetyp Array2D& <name>(parameter) habe, übergibt sie nicht einfach beim Aufruf die Adresse? In diesem Fall übergibt assign doch einfach die Adresse von this oder nicht?

    Adresse von this wäre ja ein Array2D** ...
    Mit Adressen hat das erstmal nix zu tun, es sei denn, Du willst Dich über die Implementierung des Standards in Deinem Compiler unterhalten...

    Naja und warum eine Referenz zurückgegeben wird?
    Damit du schreiben kannst

    Array2D a,b,c;
    a.assign(b.assign(c));
    

    bzw. später, wenn Du aus assign() wirklich den Zuweisungsoperator operator=() machst:

    Array2D a,b,c;
    a = b = c; // == a.operator=(b.operator=(c))
    

    Natürlich musst Du keine Referenz retournieren, ist aber allgemeine Praxis.



  • Okay, das wurde so direkt nicht im Buch beschrieben. Ich hab es jetzt jedenfalls ausprobiert und verstanden. Danke :xmas1:



  • Hallo,
    ich bin bei www.github.com/decimad/na_containers auch gerade dabei, eine array2d-Klasse zu implementieren. Vielleicht sollten wir kollaborieren? 🙂

    Grüße,
    Deci :xmas1:


Anmelden zum Antworten