(6)为多态基类声明virtual析构函数

来源:互联网 发布:windows phone符号输入 编辑:程序博客网 时间:2024/06/15 22:03

在C++中,继承类对象经由一个基类指针被删除,而该基类带着一个non-virtual析构函数,其结果是未定义的—实际执行是通常发生的是对象的继承成分没有被销毁。解决办法:给基类一个virtual析构函数。因此引出了我们今天的主题。


1. 任何类只要带有virtual函数都几乎确定应该也有一个virtual析构函数。如果类不含有virtual函数,通常便是它并不意图被用做一个基类。当类不企图被当做是基类的时候,令其析构函数为virtual往往是个馊主意。

2. 只有当类内至少有一个virtual函数,才为它声明virtual析构函数。

3. 令类带有纯虚函数,有时候可能带来便利:

virtual ~ AWOV( ) = 0; //不能为AWOV类创建对象

4. 给base classes 一个virtual析构函数,这个规则只适用于带多态性质的 base classes 身上。这种base classes 的设计目的是为了用来“通过base classes 接口处理 derived class对象”。

0 0
原创粉丝点击