这是一个类定义:
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;
}
但是我不知道如何进入每个孩子,而且析构函数没有参数。
有人可以给我一些提示吗?谢谢!
就在delete
你面前每个孩子delete[] childrenlist
:
Person::~Person()
{
for (int i = 0; i < numChildren; i++) {
delete childrenList[i];
}
delete[] childrenList;
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句