深拷贝和浅拷贝有什么区别?
发布于 2008-10-08 20:29:37
浅层副本尽可能少地复制。集合的浅副本是集合结构的副本,而不是元素的副本。通过浅层复制,两个集合现在共享单个元素。
深度拷贝会复制所有内容。集合的深层副本是两个集合,其中原始集合中的所有元素都重复。
发布于 2008-10-08 20:39:37
广度与深度;考虑以对象为根节点的引用树。
浅层:



变量A和B表示不同的内存区域,当B赋值给A时,两个变量表示相同的内存区域。稍后对其中任何一个的内容所做的修改都会立即反映在其他的内容中,因为它们共享内容。
深度:



变量A和B代表不同的内存区域,当B被赋值给A时,A指向的内存区域中的值被复制到B指向的内存区域。以后对A或B的内容所做的修改仍是唯一的;内容不共享。
发布于 2008-10-08 20:24:11
简而言之,这取决于什么指向什么。在浅层复制中,对象B指向对象A在内存中的位置。在深度复制中,对象A的内存位置中的所有内容都被复制到对象B的内存位置。
这篇维基文章有一个很棒的图表。
http://en.wikipedia.org/wiki/Object_copy
https://stackoverflow.com/questions/184710
复制相似问题