8

假设我有一个结构,其中有两个指针,每个指针都指向一个已实现析构函数的对象。还假设 head 指向具有非 NULL 值 *student 和 *next 的 Listnode 结构:

struct Listnode {    
  Student *student;
  Listnode *next;
};
Listnode *head =  new Listnode;

如果我delete在 Listnode 指针“head”上使用保留字,它将调用该结构 Student 类和 Listnode 类中的析构函数,分别指向“student”和“next”。换句话说,删除 *head 也会删除 *student 和 *next 提供的 head 是指向该 Listnode 的唯一指针

4

2 回答 2

10

除非你的析构函数~Listnode调用delete指针。然而,调用delete将调用非指针成员的析构函数。

于 2012-04-10T00:49:45.917 回答
1

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

于 2012-04-10T00:49:40.783 回答