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

Pat*_*ray 7 c++ struct destructor delete-operator

假设我有一个带有两个指针的结构,每个指针指向一个具有已实现的析构函数的对象.还假设头指向Listnode结构,该结构具有非NULL值*student和*next:

struct Listnode {    
  Student *student;
  Listnode *next;
};
Listnode *head =  new Listnode;
Run Code Online (Sandbox Code Playgroud)

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

das*_*ght 10

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

  • @PatMurray绝对是!无论你在课堂上做什么,你也可以在`struct`中做.事实上,唯一的区别是第一个访问声明(公共,私有或受保护)之前的类成员被认为是私有的,而结构的相同成员被认为是公共的. (2认同)