假设我有一个带有两个指针的结构,每个指针指向一个具有已实现的析构函数的对象。还假设头指向Listnode结构,该结构具有非NULL值* student和* next:
struct Listnode {
Student *student;
Listnode *next;
};
Listnode *head = new Listnode;
如果我在Listnode指针上使用delete
保留字,那就是'它会在该结构中调用学生类和Listnode类中的析构函数吗?#39; student'和' next'分别指向。换句话说,将删除* head也删除* student和* next提供的head是唯一指向该Listnode的指针
答案 0 :(得分:10)
除非你的析构函数~Listnode
在指针上调用delete
。但是,调用delete
将调用非指针成员的析构函数。
答案 1 :(得分:1)
不!你应该先手动删除它们,但你也可以在析构函数方法中添加删除代码。