Deep copy(深拷贝)和shallow copy(浅拷贝)的区别

  • Post author:
  • Post category:其他



deep copy 和shallow copy 都是用于对象之间的拷贝,如果对象没有其他对象的引用时,deep copy和shallow copy是一样的,但是如果有,如果只是用swallow copy,拷贝副本当中的对象引用和原来的对象是指向同一个对象的,即一块内存区域,因此,原对象和副本只要有一个当中的对象引用改变,另一个也被改变了。但是有时候我们不想这种情况发生,因此我们需要在拷贝时把引用对象一并拷贝,也就是说副本和原本是独立的,而这就是deep copy。


下面这个例子是来自

http://stackoverflow.com/questions/2657810/deep-copy-vs-shallow-copy


Shallow copy:

Some members of the copy may reference the same objects as the original:

拷贝的一些成员可能会有和原始对象引用到相同的对象:

class X
{
    
private:
    int i;
    int *pi;
public:
    X()
        : pi<



版权声明:本文为Andrewseu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。