Standardkopierkonstruktor



  • hallo,

    will mit dem Standardkopierkonstruktor eine flache Kopie erstellen.

    CAT (const CAT &theCat)
    {}
    

    Es heißt, das das Ding einfach jede Elementvariable, von dem als Parameter
    übergebenen Objekt, in die Elementvariablen des neuen Objekts kopiert.

    Ich erzeuge ein Objekt und übergebe dieses als Referenz an den StandardKK

    CAT katze1;
    CAT katze2(katze1);
    

    jetzt müssen doch in den Variablen des neuen Objekts dieselben Werte stehen wie in dem "alten" Objekt.

    ich habe hier leider unterschiedliche Werte 🙄



  • Ja weil du einen Standardkopierkonstruktur hast der leer ist, d.h. er tut nichts.
    Wenn du eine Flache kopie willst, dann entferne ihn und der Compiler generiert ihn für dich, dann darfst du ihn aber nichtmal deklarieren, sonst geht es nicht.

    Du musst es so machen:

    vorher:

    struct foo
    {
      foo( const foo& other ){}
    };
    

    nacher:

    struct foo
    {
    };
    


  • alles klar!

    hab den Mist im Buch nicht so verstanden 😃


Anmelden zum Antworten