class Base
{
virtual void foo() = 0;
//~Base(); <-- No destructor!
};
显然,Base
将被派生。那么,C++ 是否规定 Base
的编译器生成的析构函数必须是虚拟的?
谢谢!
最佳答案
不,析构函数不会是 virtual
除非你这样标记它。原因很简单 - 调用实际上可以通过指针和引用进行,并且您如何以及是否进行虚拟调用与您是否使用 new
创建对象无关。如果您不使用 new
创建对象,则不必 delete
它们,因此您不需要虚拟析构函数。
关于c++ - 编译器生成的抽象基类的析构函数是虚拟的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041886/