Contents
Eine flache Kopie eines Objekts ist eine Kopie, deren Eigenschaften dieselben Referenzen verwenden (auf dieselben zugrunde liegenden Werte zeigen) wie die des Quellobjekts, aus dem die Kopie erstellt wurde.
Bei der flachen Kopie wird ein Objekt erstellt, indem einfach die Daten aller Variablen des ursprünglichen Objekts kopiert werden. Dies funktioniert gut, wenn keine der Variablen des Objekts im Heap-Abschnitt des Speichers definiert sind. Wenn einigen Variablen Speicher aus dem Heap-Abschnitt dynamisch zugewiesen wird, verweist die kopierte Objektvariable auch auf denselben Speicherort.
Dies führt zu Mehrdeutigkeit und Laufzeitfehlern bei hängenden Zeigern. Da beide Objekte auf denselben Speicherort verweisen, werden Änderungen, die von einem vorgenommen werden, diese Änderungen auch in einem anderen Objekt widerspiegeln. Da wir eine Nachbildung des Objekts erstellen wollten, wird dieser Zweck nicht durch Shallow copy erfüllt.
Eine tiefe Kopie eines Objekts ist eine Kopie, deren Eigenschaften nicht die gleichen Verweise (auf die gleichen zugrunde liegenden Werte zeigen) wie die des Quellobjekts aufweisen, aus dem die Kopie erstellt wurde. Deep Copy wird in Szenarien verwendet, in denen eine neue Kopie (Klon) ohne Bezug auf Originaldaten erstellt wird.
Wenn Sie also entweder die Quelle oder die Kopie ändern, können Sie sicher sein, dass Sie nicht auch das andere Objekt ändern; Das heißt, Sie werden nicht unbeabsichtigt Änderungen an der Quelle oder Kopie verursachen, die Sie nicht erwarten. Dieses Verhalten steht im Gegensatz zum Verhalten einer flachen Kopie, bei der Änderungen an entweder der Quelle oder der Kopie auch dazu führen können, dass sich das andere Objekt ändert (weil die beiden Objekte dieselben Referenzen verwenden).
Deep Copy kann anhand eines Beispiels veranschaulicht werden, indem ein Employee-Objekt mit AddressInfo als Mitglied des Referenztyps zusammen mit anderen Mitgliedern des Werttyps betrachtet wird. Eine tiefe Kopie von Employee erstellt ein neues Objekt, Employee2, mit Elementen vom Werttyp gleich Employee, verweist aber auf ein neues Objekt, AddressInfo2 , das eine Kopie von AddressInfo ist.
GRUNDLAGE DES VERGLEICHS | FLACHES KOPIE | TIEFE KOPIE |
Geklonte Objekte | Geklontes Objekt und Originalobjekt sind nicht 100 % disjunkt. | Geklontes Objekt und Originalobjekt sind zu 100 % disjunkt. |
Änderungen | Alle Änderungen, die am geklonten Objekt vorgenommen werden, werden im Originalobjekt widergespiegelt oder umgekehrt. | Alle Änderungen, die am geklonten Objekt vorgenommen werden, werden nicht im Originalobjekt widergespiegelt oder umgekehrt. |
Objekt erstellen | Die Standardversion der Klonmethode erstellt die flache Kopie eines Objekts. | Um die tiefe Kopie eines Objekts zu erstellen, müssen Sie die Klonmethode überschreiben. |
Präferenz | Eine flache Kopie wird bevorzugt, wenn ein Objekt nur primitive Felder hat. | Deep Copy wird bevorzugt, wenn ein Objekt Verweise auf andere Objekte als Felder hat. |
Geschwindigkeit | Flache Kopie ist schneller. | Deep Copy ist langsam. |
Bequemlichkeit | Es ist weniger teuer. | Es ist sehr teuer. |
Deep Copy unterscheidet sich von Shallow Copy in der Art und Weise, in der die Verweistypmitglieder des Objekts kopiert werden. Beim Kopieren der Feldmitglieder des Werttyps wird in beiden Fällen eine Bit-für-Bit-Kopie des Felds durchgeführt. Beim Kopieren von Feldern des Referenztyps wird bei der flachen Kopie nur die Referenz kopiert, während bei der tiefen Kopie eine neue Kopie des referenzierten Objekts erstellt wird.
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…
Einleitung: Die Evolution der mobilen Kommunikationstechnologie hat einen bedeutenden Meilenstein erreicht, als 4G (LTE) zu…
Einleitung: JPG und PNG sind zwei gängige Bildformate, die im Internet weit verbreitet sind. Obwohl…