Re: [問題] 多型的自動回收
看板C_and_CPP (C/C++)作者cplusplus (沒事多聊天~ 歡迎打屁)時間16年前 (2009/10/07 16:15)推噓3(3推 0噓 5→)留言8則, 2人參與討論串8/13 (看更多)
※ 引述《xam (聽說)》之銘言:
: ※ 引述《legnaleurc (CA)》之銘言:
: : ====
: : 我就是希望在 Base 這個層級就能在解構時自動回收
: : 但是礙於 destructor 內不能呼叫 virtual function
: : 目前我只有檢查 flag
: : 我只想問在這個狀況下有沒有比較好的做法
: 我覺得 littleshan 的文章(包含該篇及之前的推文)已經回答你的問題了
: 基本上就是使用 virtual destructor
: jacobcrab 和 Ebergies 的提議似乎是把問題變複雜了 QQ
不,稍微有點不同,現在是原PO可能有個template method,所以希望所有subclass
去改寫doClose,但是難題是這個體系的class會被包在shared_ptr之類的東西
所以需要從destructor自動去釋放資源,所以無法用手動的方式處理
所以如果照 littleshan的方式並不能解決原PO的問題~
---
話說如果用骯髒的方法解決可接受,加個flag表示已經被呼叫過...
close()
{
if(already_closed){ return; }
.....
doClose();
.....
already_closed=true;
}
強迫所有override "doClose()與任何會因此被呼叫到的virtual function"的subclass
都在destructor內呼叫 close() 這樣應該可以解決問題,但是很髒就是了 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.124.96.179
推
10/07 16:22, , 1F
10/07 16:22, 1F
推
10/07 16:22, , 2F
10/07 16:22, 2F
→
10/07 16:23, , 3F
10/07 16:23, 3F
→
10/07 16:23, , 4F
10/07 16:23, 4F
→
10/07 16:23, , 5F
10/07 16:23, 5F
→
10/07 16:24, , 6F
10/07 16:24, 6F
推
10/07 17:37, , 7F
10/07 17:37, 7F
→
10/07 17:38, , 8F
10/07 17:38, 8F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章