黑马程序员技术交流社区

标题: 复制问题? [打印本页]

作者: 陈志辉    时间: 2014-4-10 15:43
标题: 复制问题?
本帖最后由 陈志辉 于 2014-4-14 18:24 编辑

请问一下浅copy和深copy有什么区别?可以详细解释一下吗?


作者: 一只小菜鸟    时间: 2014-4-10 15:51
浅层复制:复制引用对象的指针。
深层复制:复制引用对象内容。
作者: 程浩    时间: 2014-4-10 17:48
浅拷贝和深拷贝

  在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对象,如A=B。这时,如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指向同一块内存。这就出现了问题:当B把内存释放了(如:析构),这时A内的指针就是野指针了,出现运行错误。

  深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。下面举个深拷贝的例子。
作者: 于清扬    时间: 2014-4-11 02:02
浅层复制:只复制指向对象的指针,而不复制引用对象本身。

深层复制:复制引用对象本身。

意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源
还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。
深复制就好理解了,内存中存在了
两份独立对象本身。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2