根据我在这里和 stackoverflow 上的其他链接上找到的内容,如果我们计划多态地使用它,我们应该始终在基类中定义一个虚拟析构函数。我想知道这个规则是否有例外。
我见过没有为纯抽象基类定义虚拟析构函数的生产代码,并且在 cppcon 2014 视频“不接受访客”之一中,大约 10:06 定义的 BoolExp 结构是一个纯抽象类,没有虚拟析构函数。
所以对于像这样定义的纯抽象类
class Base {
public:
virtual foo() = 0;
virtual bar() = 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们绝对必须为“基”类定义一个虚拟析构函数,即使它确实有任何数据成员?虚拟析构函数规则有任何例外吗?
提前致谢。
最好的,RG