MOOC清华《面向对象程序设计》第4章:虚析构函数实验
2017-08-25 20:34
274 查看
#include <iostream> using namespace std; class B{ public: virtual void show(){ cout << "B.show()\n"; } virtual ~B(){ cout << "~B()\n"; } }; class D:public B{ public: void show(){ cout << "D.show()\n"; } ~D(){ cout << "~D()\n"; } }; void test(B* ptr){ ptr->show(); } int main(){ B* ptr = new D; test(ptr); delete ptr; return 0; }
如果把B类中的析构函数前的virtual去掉,则结果为
这样派生类D中的析构函数就没有被调用,容易埋下bug隐患。
相关文章推荐
- MOOC清华《面向对象程序设计》第4章:函数模板的特化实验
- MOOC清华《面向对象程序设计》第4章:类模板的特化实验
- MOOC清华《面向对象程序设计》第4章:delete禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第4章:基类与派生类的继承权限实验
- MOOC清华《面向对象程序设计》第4章:函数重写实验
- MOOC清华《面向对象程序设计》第4章:向上映射实验
- MOOC清华《面向对象程序设计》第4章:函数模板实验
- MOOC清华《面向对象程序设计》第4章:虚函数实验
- MOOC清华《面向对象程序设计》第4章:自动类型转换实验
- MOOC清华《面向对象程序设计》第8章:悬挂指针实验
- MOOC清华《面向对象程序设计》第3章:下标运算符重载实验
- MOOC清华《面向对象程序设计》第4章:explicit禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第3章:拷贝构造函数实验
- MOOC清华《面向对象程序设计》第8章:智能指针与引用计数实验
- MOOC清华《面向对象程序设计》第3章:前缀/后缀运算符重载实验
- MOOC清华《面向对象程序设计》第2章:类型推导操作符decltype实验
- MOOC清华《面向对象程序设计》第2章:基于范围的for循环实验
- MOOC清华《面向对象程序设计》第2章:函数重载实验
- MOOC清华《面向对象程序设计》第4章:强制类型转换实验
- MOOC清华《面向对象程序设计》第2章:右值引用实验