作者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
1F:推 Cloud:在建构子和解构子不要调用virtual function 10/06 20:41
2F:→ legnaleurc:对 ... 我第一篇就有说了 ... 10/06 20:59
3F:推 plover:Effective C++ Item 9 -- Never call virtual functions 10/06 22:50
4F:→ plover:during construction/destruction 10/06 22:50
5F:→ legnaleurc:我的问题很跳 tone 吗?QQ 10/07 00:51
6F:→ legnaleurc:第一篇我就有表明我知道不能呼叫 virtual function 10/07 00:55