删除结构的指针也会删除结构中的指针吗?

时间:2012-04-10 00:47:24

标签: c++ struct destructor delete-operator

假设我有一个带有两个指针的结构,每个指针指向一个具有已实现的析构函数的对象。还假设头指向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的指针

2 个答案:

答案 0 :(得分:10)

除非你的析构函数~Listnode在指针上调用delete。但是,调用delete将调用非指针成员的析构函数。

答案 1 :(得分:1)

不!你应该先手动删除它们,但你也可以在析构函数方法中添加删除代码。