C++ 将删除结构';s指针是否也删除结构中的指针?

C++ 将删除结构';s指针是否也删除结构中的指针?,c++,struct,destructor,delete-operator,C++,Struct,Destructor,Delete Operator,假设我有一个结构,它有两个指针,每个指针指向一个具有已实现析构函数的对象。还假设head指向具有非空值*student和*next的Listnode结构: struct Listnode { Student *student; Listnode *next; }; Listnode *head = new Listnode; 如果我在Listnode指针“head”上使用delete保留字,它将调用该结构中的析构函数Student类和Listnode类,Student和nex

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

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

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

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

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

这样您就可以为结构实现析构函数了?@PatMurray绝对可以!在类中可以执行的任何操作,也可以在结构中执行。事实上,唯一的区别是,在第一次访问声明(public、private或protected)之前的类的成员被视为私有的,而结构的相同成员被视为公共的。结构可以像类一样继承,默认的继承访问对结构是public,对类是private。另一个不同点,但大致相同。