繁体   English   中英

C ++删除指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM