作者legnaleurc (CA)
看板C_and_CPP
標題Re: [問題] 多型的自動回收
時間Tue Oct 6 19:43:04 2009
※ 引述《littleshan (我要加入劍道社!)》之銘言:
我想我把我的 interface 勾出來會比較清楚一點:
class Base {
public:
virtual ~Base() {
try {
close();
catch( ... ) {
// ...
}
}
void close() {
// ...
doClose();
// ...
}
private:
virtual void doClose() = 0;
};
class Derived {
virtual void doClose() {
// ...
}
};
====
也就是說在 Derived 解構完後
Base::~Base()
Base::close()
Base::doClose() <- 在這個 frame 會造成 pure virtual function call
我知道 destructor 是用 chain call, 而不是 override
所以才會有這個問題
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.248.119
推 Cloud:在建構子和解構子不要調用virtual function 10/06 20:41
→ legnaleurc:對 ... 我第一篇就有說了 ... 10/06 20:59
推 plover:Effective C++ Item 9 -- Never call virtual functions 10/06 22:50
→ plover:during construction/destruction 10/06 22:50
→ legnaleurc:我的問題很跳 tone 嗎?QQ 10/07 00:51
→ legnaleurc:第一篇我就有表明我知道不能呼叫 virtual function 10/07 00:55