当前位置: 首页 > 文档资料 > C++大学教程 >

10.8 虚析构函数

优质
小牛编辑
115浏览
2023-12-01

用多态性处理动态分配的类层次结构中的对象时存在一个问题。如果delete运算符用于指向派生类对象的基类指针,而程序中又显式地用该运算符删除每一个对象,那么,不管基类指针所指向的对象是何种类型,也不管每个类的析构函数名是不相同的这样一种情况,系统都会为这些对象调用基类的析构函数。

这种问题有一种简单的解决办法,即将基类析构函数声明为虚析构函数。这样就会使所有派生类的析构函数自动成为虚析构函数(即使它们与基类析构函数名不同)。这时,如果像上面那样使用delete运算符时,系统会调用相应类的析构函数。记住,删除派生类对象时,同时删除派生类对象的基类部分,基类析构函数在派生类析构函数之后自动执行。

编程技巧 10.2
如果一个类拥有虚函数,即使该类不需要虚析构函数也给它提供一个虚析构函数,这样能够使该类的派生类包含正确调用的析构函数。

常见编程错误 10.2
将构造函数声明为虚函数是语法错误。构造函数不能是虚函数。