Deep Copy vs. Shallow Copy
Frage:
Was sind die Hauptunterschiede zwischen tiefe Kopie und flache Kopie?
Antwort:
Flache Kopie:
Beispiel:
<code class="c++">class X { private: int i; int *pi; public: X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(copy.pi) {} };</code>
In dieser flachen Kopie verweist pi auf dasselbe int-Objekt sowohl im Original als auch im kopierten Objekt.
Deep Copy:
Beispiel:
<code class="c++">class X { private: int i; int *pi; public: X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(new int(*copy.pi)) {} };</code>
In dieser tiefen Kopie zeigt pi auf ein neues int-Objekt mit demselben Wert wie das Original.
Konstruktortyp kopieren:
Der Standardkopierkonstruktor hängt vom Verhalten des Kopierkonstruktors jedes Mitglieds ab:
Beispiel:
In Im folgenden Beispiel erstellt der Standard-Kopierkonstruktor aufgrund seiner Implementierung eine tiefe Kopie für das Mitglied std::vector:
<code class="c++">class Y { private: std::vector<int> v; public: Y() {} Y(const Y& copy) : v(copy.v) {} };</code>
In diesem Fall erstellt der Kopierkonstruktor von std::vector eine tiefe Kopie davon Inhalt.
Das obige ist der detaillierte Inhalt vonDeep Copy vs. Shallow Copy: Wann benötige ich eine echte Kopie meiner Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!