c++ - 具有指向同一类对象的指针的类

标签 c++ destructor copy-constructor self-reference

我正在尝试创建带有指向配偶(Person 对象)和 child 表(Person 对象)的指针的类 Person。该类实现了结婚(operator+=)、离婚(method)和生 child (operator++):

class Person{
private:
    char* name;
    int sex;
    Person* spouse; 
    Person* children[5];
public:
    Person();
    Person(const Person&);      
    Person & operator =(const Person&);
    Person & operator +=(Person&);//marriage
    Person & operator ++();//new children
    void divorce();//divorce
    Person::~Person();
}

我创建了析构函数,只要没有配偶就删除 child :

Person::~Person(){
    if (name !=NULL)
        delete [] name;
    name=NULL;

    if (spouse!=NULL)
        spouse->spouse =NULL;
    else{
        for (int i=0; i<5;i++){
            if (children[i]!=NULL)
                delete children[i];
            children[i]=NULL;
            }
    }
}

我不知道我的复制构造函数和 operator= 是否应该创建另一个 spouse 和 children 的实例。我试图这样做,但我陷入了无限的引用之中。是否可以创建具有正确分配的配偶和子女的 Person 对象的拷贝?

提前感谢您的任何意见和建议 猎鹿人

最佳答案

我认为您的设计方式有误。 Person 类最好只有一个定义明确的职责。现在,它至少代表两个独立的概念 - 家庭。考虑将这两个概念拆分为不同的类型 - 它应该更容易实现。

关于c++ - 具有指向同一类对象的指针的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219903/

相关文章:

c++ - 无法使用代码块编译 Boost

c++ - 以优雅的方式进行二进制比较操作

c++ - 调用一个平凡的析构函数有什么影响?

C++ - 析构函数只是释放内存还是实际上删除了对象?

c++ - 在析构函数中尝试 Catch block

c++ - std::thread 通过引用传递调用复制构造函数

c++ - 涉及多次调用析构函数的奇怪 C++ 行为

c++ - boostscoped_lock 消耗太多CPU

c++ - 对类使用 '=' 而无需在 C++ 中定义 '=' 运算符

c++ - 使用 -pedantic 编译时采用 std::reference_wrapper 的模糊构造函数