C++删除指针

imk*_*dal 1 c++ arrays int concatenation

我有一个包含医生类的程序,每个Doctor对象都有一个"患者"链表.这些患者使用以下代码行创建

Patient * patient = new Patient(string firstname, string ailment);
Run Code Online (Sandbox Code Playgroud)

然后将该患者添加到Doctor的链接列表中.Doctor类中有一个指针,用于指向并遍历列表并获取每个患者.当我想要删除这些患者时,我必须从列表的开头开始并遍历每个患者.我的问题是,我可以通过简单地调用他们的析构函数来删除eacg患者吗?

Patient::~Patient(){

}
Run Code Online (Sandbox Code Playgroud)

或者,当我指向每个员工时,我是否需要在指针上实际调用delete?

Joh*_*ing 9

你打电话delete删除东西. delete反过来,会导致调用对象的析构函数.

C++支持直接调用类的析构函数,并且在某些罕见的情况下实际上很有用,但它实际上并不释放内存.这不是你想要做的.


Luc*_*ore 5

首先,new返回一个指针,所以我猜你的意思Patient* patient = ....

除此之外,是的,您需要调用delete您分配的所有内容new并调用析构函数.

(鼓)使用一个std::unique_ptr代替.我希望当你说你有病人名单时,你的意思是你有一个std::list病人.