编写深拷贝 - 复制指针值

Ano*_*ous 10 c++ pointers copy

在为包含动态分配内存的指针的类编写复制构造函数时,我有一个问题.

如何指定我希望将复制的对象的指针值复制到复制到对象的指针.显然这样的事情不起作用......

*foo = *bar.foo;
Run Code Online (Sandbox Code Playgroud)

因为,bar对象被删除(首先复制对象的目的),这只是复制到对象的foo指向同一个地方.

这里有什么解决方案?如何获取动态分配的内存的值,并将其复制到不同的地址?

Nik*_*nić 19

您分配新对象

class Foo
{
    Foo(const Foo& other)
    {
        // deep copy
        p = new int(*other.p); 

        // shallow copy (they both point to same object)
        p = other.p;
    }

    private:
        int* p;
};
Run Code Online (Sandbox Code Playgroud)