首先要明白什么是深拷贝,浅拷贝,C++大神可以忽略
浅拷贝:拷贝对象本身。
深拷贝:深拷贝不仅拷贝对象本身,而且还拷贝对象指向的引用。
区别:浅拷贝拷贝的对象和对象本身公用一块内存,所以拷贝的对象发生变化会影响另一个对象。而深拷贝是另开辟一块内存,所以其中一个改变不会影响另外一个。深拷贝是对浅拷贝的递归。
浅拷贝是指在拷贝对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对引用进行拷贝,
没有对引用指向的对象进行拷贝。
而深拷贝是指在拷贝对象时,同时会对引用指向的对象进行拷贝。
区别就在于是否对 对象中的引用变量所指向的对象进行拷贝。
浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。
深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。