【发布时间】:2014-03-08 13:12:57
【问题描述】:
我写了一个没有虚函数的基类和派生类。 virtual 的使用通常是我看到的何时使用 virtual 析构函数的指南。
然而,虽然我的类没有虚函数,但我在传递它们时以多态方式使用这些类。所以Base类应该实现一个虚析构函数吗?
class Base;
class Derived;
main()
{
base& baseVar = derived();
foo(baseVar);
}
【问题讨论】:
-
只有当你要
delete指向基类的指针时才使用虚拟析构函数。那是你唯一需要的时候。如果您不打算以这种方式删除,那么请保护基类的析构函数以防止错误。 -
“使用 virtual 是典型的指南”——这是一个有用的经验法则,但真正的指南是您是否需要多态销毁(例如通过指向基类的指针删除)。