析构函数中调用虚函数

来源:互联网 发布:如何在淘宝买到真玉 编辑:程序博客网 时间:2024/04/28 09:28

首先贴一个小例子

本来在这个例子中,是为了让派生类在析构时,自动调用清理函数,不过在实际应用中,这段代码并不能编译通过。开始时,用的时VC2008,只是给出了一个"error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall CBaseRecv::Close(void)"错误,还以为是VC的编译器有问题,换成Eclipse测试,这次给的信息明确了:abstract virtual `virtual void BaseC::Close()' called from destructor。到此,这个问题算是弄清楚了,原来,在基类中,这个纯虚函数已经是不可调用了。

这个问题就涉及到了类的析构顺序:派生类->基类。基类找不到这个函数的地址,当然会有问题了。