黑马程序员技术交流社区

标题: shallow copy and deep copy的具体区别是什么 [打印本页]

作者: 敢于承担    时间: 2014-3-23 17:31
标题: shallow copy and deep copy的具体区别是什么
弱弱的问下各位大大,RT.

浅复制和深复制的具体区别.
我大概知道的只是理论上的一点皮毛.

浅层复制是指:只复制指向对象的指针,不复制引用对象本身;
深层复制则是复制引用对象本身。

希望能够更深入的解答下区别.


作者: conpgy    时间: 2014-3-24 19:26
浅复制,复制指向对象的指针。就是把这个对象的地址赋值给一个新的指针变量。该指针变量可以通过指针间接访问修改这个对象的内容。
深复制,复制整个对象的内容。创建的对象赋值给新的变量。而你改变新的对象的内容,原对象不会改变。因为,这里实际上有两个不同的对象。而浅复制在内存中只有一个对象。
比方说一个保险柜里有一万块钱。是一对夫妻共同拥有财产。但钥匙只有一把,妻子拿着。浅复制就是新配一把钥匙给丈夫。这样两个人谁都可以往保险柜里存钱或着拿钱。存钱或取钱,保险柜里的钱就会变化,夫妻双方的财产都会有影响。深复制就是新弄一个保险柜,里面存一万块钱,新的柜子钥匙丈夫保管。这是丈夫拥有的。这样各自的财产各自管理。取钱存钱也只能改变自己保险柜里的钱。妻子从自己保险柜里取钱,丈夫的保险柜里的钱不会减少。这里,钥匙就是指针,保险柜就是对象。浅复制有两个钥匙指着同一个保险柜。即两个指针指着同一个对象。深复制就是两把钥匙,每把钥匙对应不同的保险柜。就是两个指针指着不同的两个对象。丈夫拿自己的钥匙从自己的保险柜里取钱,只会减少自己柜子里的钱。不会减少妻子柜子里的钱。就是深复制改变一个对象的内容,另一个对象不受影响。浅复制,只有一万块钱。深复制,有两万块钱。好吧,闲的无聊,举了这个一个烂比喻。




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