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?
你打电话delete
删除东西. delete
反过来,会导致调用对象的析构函数.
C++支持直接调用类的析构函数,并且在某些罕见的情况下实际上很有用,但它实际上并不释放内存.这不是你想要做的.
首先,new
返回一个指针,所以我猜你的意思Patient* patient = ...
.
除此之外,是的,您需要调用delete
您分配的所有内容new
并调用析构函数.
或(鼓)使用一个std::unique_ptr
代替.我希望当你说你有病人名单时,你的意思是你有一个std::list
病人.