Unterschied bei Zuweisungen
-
Hallo,
Meine Frage lautet ob es einen Unterschied macht
wenn manStruktur 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!