Unterschied bei Zuweisungen



  • Hallo,
    Meine Frage lautet ob es einen Unterschied macht
    wenn man

    Struktur a = b;

    oder

    Struktur a;
    a = b;

    schreibt.
    In meinem Code wird nur bei der letzteren Schreibweise ein überladener = Operator aufgerufen. In der ersteren werden Pointeradressen direkt kopiert.Das ist wirklich sehr seltsam.
    Danke für alle Antworten.



  • Variante einst ruft den Copy-Konstruktor auf, Variante zwei den Konstruktor und den Zuweisungsoperator.

    class X
    {
        // Copy-Konstruktor
        X(const X &source);
        // Zuw.-Operator
        X& operator = (const X &Source);
    };
    


  • Ja, das erste ruft den Copy-Konstruktor auf und ist dasselbe wie

    Struktur a(b);
    

    Lies dir am besten (wo auch immer) durch, wozu der Copy-Konstruktor da ist und wo er verwendet wird.

    Wenn du schon einen Zuweisungsoperator hast, kannst du den Copy-Konstruktor vielleicht einfach so schreiben:

    class X
    {
      X(const X& other)
      {
        *this = other;
      }
    };
    

    In den meisten Fällen tun die beiden automatisch generierten Versionen aber eh das Richtige, _wenn_ man entsprechende Resourcenwrapper als Elementvariablen verwendet, deren op= und Copy-Konstruktor ebenfalls das Richtige tun.



  • Ich danke euch!


Anmelden zum Antworten