c++ - 在 C++ 中复制具有指向自身的自指针的类的构造函数?

标签 c++ c++11 deep-copy self-reference this-pointer

我想问的是,我们如何实现一个类的复制构造函数,该类具有指向自身的指针作为其数据成员,我想实现一个深复制,

class City
{
    string name;
    City* parent;
public:
    City(string nam, double dcov);
    City(string nam, double dcov, City* c);
City(const City& obj)

{

    this-> name = obj.name;
// how to assign parent 
parent = new City(??)
}
    ~City();

    void setName(string name1);
    void setDistanceCovered(int dist);
    string getName();
    double getDistanceCovered();
    City* getParent(){return parent;}


};

我很困惑这一行 //如何分配父级 parent = new City(??) 会再次调用构造函数而不是深层复制? 问候。

最佳答案

怎么样

if (obj.parent != NULL)
    parent = new City(*obj.parent)
else
    parent = NULL;

除非您在父层次结构中有循环,否则这应该有效。

关于c++ - 在 C++ 中复制具有指向自身的自指针的类的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21628532/

相关文章:

c++ - 访问类的私有(private)成员函数

c++ - 对话框中的更改未反射(reflect)在可执行文件中

c++ - 我可以使用 Boost program_options 获取多个任意键值对吗?

c++ - 使用链接列表复制 Ctor

c++ - 分配一个新构造的 shared_ptr

c++为函数表建立一个名称,函数具有不同的签名

c++ - 如何使用已删除的复制构造函数初始化类数组(C++11)

c++ - 继承的构造函数,在 clang++3.9 中编译,在 g++7 中失败

python - 按值而不是引用复制列表列表

C++ 传递 std::string 的最快方法?