Kopie eines Objektes als Rückgabe



  • Ich lerne gerade C++ mit Video2Brain C++ Einstieg für Anspruchsvolle und habe eine Frage zu this.

    Wieso gebe ich hier eine Kopie des Objektes zurück und nicht nur einen Verweis?

    class myclass{
    .
    .
    myclass duplicate() { return (*this); }
    .
    .
    };
    

    und wieso ist da eine Klammmer um das this?

    danke



  • derjunge schrieb:

    und wieso ist da eine Klammmer um das this?

    Die Klammer bei return ist generell Unfug und störend. Es gibt eine Reihe von C-Büchern, die das doch machen (wohl alle gegenseitig abgeschrieben, denn in freilaufendem C-Code war es nicht üblich, bis diese Bücher damit anfingen und jetzt einige Nubes verseucht haben).
    Falls C++-Bücher sowas haben, ist das nur ein Zeichen, daß von dieser lokalen Gruppe abgeschrieben wurde, bzw ein solches genommen wurde und in Kapiteln 15 bis 19 ein wenig C++ reingefummelt wurde und printf durch cout ersetzt. Also 👎



  • derjunge schrieb:

    Wieso gebe ich hier eine Kopie des Objektes zurück und nicht nur einen Verweis?

    myclass duplicate() { return (*this); }
    };
    

    Weil der Rückgabetyp myclass ist und nicht myclass& oder myclass*. Da muß der Compiler halt es inzukriegen, daß das Objekt rauskopiert wird.



  • danke und bei

    [cpp]
    class myclass{
    .
    .
    myclass* duplicate() { return this; }
    .
    .
    };

    würde ich dann nur ein Verweis erzeugen, so dass wenn sich das erste objekt ändert auch das zweite objekt geändert ist?

    Ich glaube die Video2Brain ist nicht wirklich toll oder? Ich habe immerhin 40 Eur für bezahlt.



  • derjunge schrieb:

    danke und bei

    class myclass{
    .
    .
    myclass* duplicate() { return this; }
    .
    .
    };
    

    würde ich dann nur ein Verweis erzeugen, so dass wenn sich das erste objekt ändert auch das zweite objekt geändert ist?

    Ja. Also naja, ein Zeiger halt. In C könnte man bedenkenlos auch Verweis sagen, weil es da nur Zeiger gibt. Wobei mir nicht ganz klar ist, warum "Verweis" dem lerner mehr hilft, als "Zeiger". In C++ sollte man wohl Zeiger und Referenzen unterscheiden und nicht "Verweis" sagen.

    derjunge schrieb:

    Ich glaube die Video2Brain ist nicht wirklich toll oder? Ich habe immerhin 40 Eur für bezahlt.

    Keine Ahnung. Ich kenne die Marke noch nicht.


Anmelden zum Antworten