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