为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

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

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



查看完整描述

4 回答

?
梵蒂冈之花

浅拷贝尽可能少复制。集合的浅表副本是集合结构的副本,而不是元素。使用浅拷贝,两个集合现在共享各个元素。

深拷贝复制一切。集合的深层副本是两个集合,原始集合中的所有元素都是重复的。


查看完整回答
反对 回复 2019-05-25
?
森栏

广度与深度; 根据您的对象作为根节点的引用树来思考。

浅:

https://img.mukewang.com/5ce8f7fc00016ba301200090.jpghttps://img3.mukewang.com/5ce8f7fd00019f0c01200090.jpghttps://img1.mukewang.com/5ce8f7fe0001427301200090.jpg

变量A和B指的是不同的存储区域,当B被分配给A时,两个变量指的是相同的存储区域。以后对其中一个内容的修改会立即反映在其他内容中,因为它们共享内容。

深:

https://img1.mukewang.com/5ce8f8010001b61e01200090.jpghttps://img4.mukewang.com/5ce8f80c000177c101200090.jpghttps://img2.mukewang.com/5ce8f80e00016ba301200090.jpg

变量A和B指的是不同的存储区,当B被分配给存储区中的值时,A指向的值被复制到B指向的存储区中。后来对其中任何内容的修改仍然是A或B的唯一内容; 内容不共享。


查看完整回答
反对 回复 2019-05-25
?
慕尼黑的夜晚无繁华

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

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

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


查看完整回答
反对 回复 2019-05-25
?
胡说叔叔

特别是对于iOS开发人员:

如果B浅拷贝A,那么它就像原始数据B = [A assign];和对象它像B = [A retain];

B和A指向相同的内存位置

如果B深拷贝A,那么它像B = [A copy];

B和A指向不同的存储位置

B存储器地址与A相同

B与A的内容相同


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 191 浏览
我要回答
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信