c++ - 编写深拷贝 - 复制指针值

标签 c++ copy pointers

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

如何指定我希望将复制自对象的指针值复制到复制对象的指针。显然这样的事情是行不通的......

*foo = *bar.foo;

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

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

最佳答案

分配新对象

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;
};

关于c++ - 编写深拷贝 - 复制指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936942/

相关文章:

c++ - 与带有指针项的 vector 拷贝相关的问题

c - 取消引用 void* 文字

c++ - 使用指向二维数组的一维指针数组?

c++ - 为什么 C++ 删除运算符不将指针设置为 NULL?

c++ - C++ 中的引用不明确

c++ - 尝试将库链接到使用 OpenGL 的文件,而链接器无法找到 GL 相关文件

linux - 将 Linux 分区克隆到外部硬盘

c++ - 使用泰勒方法 C++ 和循环计算 Pi

c++ - 卡住使用 QTcpSocket 发送大文件

c++ - 在 C++ 中精确复制对象(构造后的数据集)