¿Cuál es la diferencia entre una copia profunda y una copia superficial?

Resuelto David Locke asked hace 15 años • 31 respuestas

¿Cuál es la diferencia entre una copia profunda y una copia superficial?

David Locke avatar Oct 09 '08 03:10 David Locke
Aceptado

Amplitud vs Profundidad; piense en términos de un árbol de referencias con su objeto como nodo raíz.

Poco profundo:

Antes de copiar Copia superficial Superficial Hecho

Las variables A y B se refieren a diferentes áreas de la memoria, cuando B se asigna a A las dos variables se refieren a la misma área de la memoria. Las modificaciones posteriores al contenido de cualquiera de ellos se reflejan instantáneamente en el contenido del otro, ya que comparten contenidos.

Profundo:

Antes de copiar Copia profunda Profundo hecho

Las variables A y B se refieren a diferentes áreas de la memoria, cuando B se asigna a A, los valores en el área de memoria a la que apunta A se copian en el área de memoria a la que apunta B. Las modificaciones posteriores al contenido de cualquiera de ellos siguen siendo exclusivas de A o B; Los contenidos no se comparten.

dlamblin avatar Oct 08 '2008 20:10 dlamblin

Las copias superficiales se duplican lo menos posible. Una copia superficial de una colección es una copia de la estructura de la colección, no de los elementos. Con una copia superficial, ahora dos colecciones comparten los elementos individuales.

Las copias profundas lo duplican todo. Una copia profunda de una colección son dos colecciones con todos los elementos de la colección original duplicados.

S.Lott avatar Oct 08 '2008 20:10 S.Lott