Heim >Backend-Entwicklung >C++ >Tiefe vs. flache Kopie: Wann sollten Sie sich für welche entscheiden?
Deep vs. Shallow Copy in der Programmierung
Beim flachen Kopieren wird ein neues Objekt erstellt, das auf dieselben zugrunde liegenden Daten wie das Original verweist. Im Gegensatz dazu wird beim tiefen Kopieren ein neues Objekt erstellt, das unabhängige Duplikate aller mit dem Original verknüpften Daten enthält.
Betrachten Sie die folgende C-Klasse:
<code class="c++">class X { public: int i; int *pi; X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(copy.pi) {} };</code>
In diesem Fall führt das zu flachem Kopieren sowohl in den ursprünglichen als auch in den kopierten 🎜>
<code class="c++">X original; X copy(original);</code>Dadurch verfügt das kopierte Es wurde jedoch klargestellt, dass das Verhalten vom Typ jedes Mitglieds abhängt. Der Standard spezifiziert das mitgliedweise Kopieren, was bedeutet, dass Skalartypen (wie in diesem Beispiel int) mithilfe des integrierten Zuweisungsoperators kopiert werden.Daher hängt die Wahl zwischen tiefem und flachem Kopieren von den spezifischen Anforderungen der Anwendung ab und die Eigenschaften der kopierten Daten.
<code class="c++">class X { public: int i; int *pi; X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(new int(*copy.pi)) {} };</code>
Das obige ist der detaillierte Inhalt vonTiefe vs. flache Kopie: Wann sollten Sie sich für welche entscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!