C++虚析构函数
析构函数可以声明为虚函数。
delete 基类指针;
程序会根据基类指针指向的对象的类型确定要调用的析构函数
基类的析构函数为虚函数,所有派生类的析构函数都是虚函数
构造函数不得是虚函数
如果要操作具有继承关系的类的动态对象,最好使用虚析构函数。特别是在析构函数需要完成一些有意义的操作,比如释放内存
析构函数还可以是纯虚的。
#include <iostream> using namespace std; // 对于一个没有任何接口的类,如果想要将它定义成抽象类,只能将虚析构函数声明为纯虚的 // 通常情况下在基类中纯虚函数不需要实现 // 例外是纯虚析构函数要给出实现。(给出一个空的实现即可) class Base { public: virtual ~Base() = 0 { } }; class Derived : public Base { }; int main(void) { // Base b; //error, 抽象类 Derived d; return 0; }
// 对于一个没有任何接口的类,如果想要将它定义成抽象类,只能将虚析构函数声明为纯虚的
// 通常情况下在基类中纯虚函数不需要实现
// 例外是纯虚析构函数要给出实现。(给出一个空的实现即可)。