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