回答如下:
在c++中,基类的析构函数需要定义为虚函数,原因有以下几点:
- 当使用多态特性,让基类指针指向派生类对象时,如果析构函数不是虚函数,通过基类指针销毁派生类对象时,会调用
静态绑定
的析构函数,也就是基类的析构函数,从而只能销毁属于基类的元素
,导致派生类析构不完全,程序就会出现资源泄露或未定义行为。 - 当
派生类中不存在使用动态资源或其他自定义析构行为时
,可以不写
为虚析构函数,来提高程序效率。但为了程序的可扩展性和健壮性,在使用多态特性时,一般都建议将基类的析构函数定义为虚函数。