¿Cuál es la diferencia entre una copia profunda y una copia superficial?
¿Cuál es la diferencia entre una copia profunda y una copia superficial?
Amplitud vs Profundidad; piense en términos de un árbol de referencias con su objeto como nodo raíz.
Poco profundo:
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:
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.
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.