首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >深拷贝和浅拷贝有什么区别?

深拷贝和浅拷贝有什么区别?
EN

Stack Overflow用户
提问于 2008-10-08 20:22:43
回答 31查看 728.3K关注 0票数 754

深拷贝和浅拷贝有什么区别?

EN

回答 31

Stack Overflow用户

回答已采纳

发布于 2008-10-08 20:29:37

浅层副本尽可能少地复制。集合的浅副本是集合结构的副本,而不是元素的副本。通过浅层复制,两个集合现在共享单个元素。

深度拷贝会复制所有内容。集合的深层副本是两个集合,其中原始集合中的所有元素都重复。

票数 877
EN

Stack Overflow用户

发布于 2008-10-08 20:39:37

广度与深度;考虑以对象为根节点的引用树。

浅层:

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

深度:

变量A和B代表不同的内存区域,当B被赋值给A时,A指向的内存区域中的值被复制到B指向的内存区域。以后对A或B的内容所做的修改仍是唯一的;内容不共享。

票数 973
EN

Stack Overflow用户

发布于 2008-10-08 20:24:11

简而言之,这取决于什么指向什么。在浅层复制中,对象B指向对象A在内存中的位置。在深度复制中,对象A的内存位置中的所有内容都被复制到对象B的内存位置。

这篇维基文章有一个很棒的图表。

http://en.wikipedia.org/wiki/Object_copy

票数 173
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/184710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档