C ++-如何在析构函数中删除子类

奇数1

这是一个类定义:

class Person {
private:
    char* name;
    int numChildren;
    Person** childrenList;
public:
    Person(char* name);
    ~Person();
};

Person::Person()构造函数中,它将根据构造函数参数设置人员的姓名,然后Person为每个孩子创建对象,每个孩子可能还有其他孩子。假设在一种情况下,我运行以下命令:Person* me = new Person("Alex");,将创建以下结构:在此处输入图片说明即,如果me创建了,me则还将递归创建子级。

但是我在Person::~Person()析构函数中遇到了麻烦在析构函数中,它应该删除所有动态对象,包括名称和每个子对象。这是我的尝试:

Person::~Person() {
    for (int i = 0; i < numChildren; i++) {
        // go inside each child
    }
    delete[] this->name;
    delete[] childrenList;
}

但是我不知道如何进入每个孩子,而且析构函数没有参数。

有人可以给我一些提示吗?谢谢!

Sid S

就在delete你面前每个孩子delete[] childrenlist

Person::~Person()
{
    for (int i = 0; i < numChildren; i++) {
        delete childrenList[i];
    }
    delete[] childrenList;
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章