作者yoco315 (眠月)
看板C_and_CPP
標題Re: [問題] 多型的自動回收
時間Wed Oct 7 21:11:52 2009
※ 引述《legnaleurc (CA)》之銘言:
: 我想我把我的 interface 勾出來會比較清楚一點:
: class Base {
: public:
: virtual ~Base() {
: close();
: }
不要 = ="
既然資源是在 D 配的,D 要自己處理,不要給 B 管
所以這邊改成這樣
virtual ~Base() {} // 蝦米都不做
: class Derived {
: virtual void doClose() {
: // ...
: }
然後 D 加上解構子
virtual ~Derived () { // 我自己來 XD
D::doClose(); // ~B() 不能呼叫虛擬函數
} // 我自己呼叫應該沒問題吧???
還是我哪邊錯惹??????????
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.107.43
推 cplusplus:我猜是可能有個template method pattern吧 在BASE做點事 10/08 01:09
→ cplusplus:但是是跟subclass使用的資源無關但通用的 ex. logging ? 10/08 01:09
推 cplusplus:而且dtor是virtual的話 每個subclass都會呼叫 超過兩層 10/08 01:13
→ cplusplus:的subclass 還是會呼叫到virtual... 10/08 01:14