簡體   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