复制一个在C++中具有自我指针的类的构造函数?

1 c++ deep-copy this-pointer self-reference c++11

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

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


};
Run Code Online (Sandbox Code Playgroud)

我很困惑,这行// how to assign parent parent = new City(??)会再次调用构造函数而不是深层复制?问候.

Kri*_*ske 7

怎么样

if (obj.parent != NULL)
    parent = new City(*obj.parent)
else
    parent = NULL;
Run Code Online (Sandbox Code Playgroud)

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