根据我在这里以及StackOverflow上的其他链接上发现的信息,如果我们计划通过多态使用基类,则应该始终在基类中定义虚析构函数。我想知道是否有例外。
我看过一些生产代码,其中纯虚基类没有定义虚析构函数,在cppcon 2014的视频Accept no visitor中,大约在10:06处,定义了BoolExp结构体作为一个纯抽象类,并且没有虚析构函数。
因此,对于像这样定义的纯抽象类:
class Base {
public:
virtual foo() = 0;
virtual bar() = 0;
}
我的问题是,即使“Base”类没有任何数据成员,我们是否一定要为其定义虚拟析构函数?是否有任何虚拟析构函数规则的例外情况?
提前致谢。
最好的祝福, RG