看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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