Heim > Backend-Entwicklung > C++ > Hauptteil

Tiefe vs. flache Kopie: Wann sollten Sie sich für welche entscheiden?

DDD
Freigeben: 2024-10-28 00:15:29
Original
488 Leute haben es durchsucht

 Deep vs. Shallow Copy: When Should You Choose Which?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!