深复制和浅复制
一般来说浅复制,只是复制了改对象的一个引用,也就是两个引用同时指向了一个对象。互相影响。
深复制,是又创建了和原对象属性值一模一样的对象,不是复制原对象的引用。两个互不影响。
类比java:java中有一个对象池,当执行A a1 = new A()时,会在对象池中生成一个A的对象,并把这个对象的引用给a1;
浅拷贝就是如A a2 = a1,这时候对象池中只有一个A对象,只不过这个对象多了个a2的引用,此时a1和a2指向的是同一个对象;
深拷贝就是在对象池中再生成一个A对象给a2,这个A对象跟a1指向的A对象内容、引用等都一样,但此时a1和a2指向的是不同的两个对象。