[英]C++ deleting pointers
我有一个包含Doctor类的程序,每个Doctor对象都有一个“患者”链接列表。 这些患者使用以下代码行创建
Patient * patient = new Patient(string firstname, string ailment);
然后将该患者添加到“医生的链接”列表中。 Doctor类中有一个指针,用于指向和迭代列表并获取每个患者。 当我想删除这些患者时,我必须从列表的开头开始,并逐一遍历。 我的问题是,我可以通过遍历他们的析构函数来删除eacg患者吗?
Patient::~Patient(){
}
还是我需要在指针指向每个员工时实际调用指针上的delete?
您调用delete
以删除内容。 delete
将导致对象的析构函数被调用。
C ++支持直接调用类的析构函数,并且实际上在一些罕见的情况下很有用,但实际上并不会释放内存。 这不是您要在此处执行的操作。
首先, new
返回一个指针,所以我猜你的意思是Patient* patient = ...
除此之外,是的,您将需要对使用new
分配的所有内容调用delete
,并且将调用析构函数。
或 (鼓式)使用std::unique_ptr
代替。 我希望当您说自己有一个病人清单时,意味着您有一个std::list
病人std::list
。
调用delete
实际上会调用该对象的析构函数。
由于您正在为每个患者对象动态分配内存(应为Patient* patient
tho ...),因此您也需要手动分配每个对象...
查看此Wiki页面以获取更多信息。
据我所知,您必须分别在每个指针上调用delete。 从“患者”析构函数中删除指向“患者”的指针似乎违反了使用类的目的(即,它们是自包含的,无法访问外界)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.