深拷贝和浅拷贝的区别
深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。
这句话读起来很复杂,但其实很好理解,因为这两者的区别就是拷贝后的对象是否对原来的对象有影响
浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
浅复制只会将对象的各个属性进行复制,并不会进行递归复制
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存
深拷贝它不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深复制的方法递归复制到新对象上。这就不会存在对象的属性指向同一个对象的问题。
在涉及到指针赋值的函数中经常会出现浅拷贝与深拷贝,大家要注意程序的需求与逻辑谨慎使用