为什么析构函数要定义为虚函数
来源:互联网 发布:java json解析string 编辑:程序博客网 时间:2024/05/01 14:46
#include <iostream>using namespace std;class A{public: A() { cout << "我是A的构造函数" << endl; } virtual ~A()//~A() { cout << "我是A的析构函数" << endl; } void fun() { cout << "-------------我是分割线------------" << endl; }protected:private:};class B :public A{public: B() { cout << "我是B的构造函数" << endl; } ~B() { cout << "我是B的析构函数" << endl; }};int main(){ B b; A *p = new B; p->fun(); delete(p); system("pause"); return 0;}
当A的析构函数声明为虚函数时,代码运行结果如下:
当A的析构函数为普通函数时,代码运行结果如下:
对比可得出,将基类的析构函数定义为虚函数后,利用delete删除一个指向派生类的对象指针时,系统会自动调用基类和派生类的析构函数。而没有定义为虚函数时,系统只会调用基类的析构函数。
1 0
- 为什么析构函数要定义为虚函数
- 为什么析构函数定义为虚函数
- 为什么要将析构函数定义为虚函数
- 为什么析构函数可以为虚函数,什么情况下需要将析构函数定义为虚函数?
- C++析构函数为什么要定义成虚函数
- 为什么基类的析构函数定义为虚函数?
- 从为什么要将基类的析构函数定义为虚函数谈起~~
- 为什么基类的析构函数定义为虚函数
- 析构函数定义为虚函数
- 析构函数定义为虚函数
- 析构函数定义为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- 提升开发效率之工具篇
- 用Android studio创建Cocos2d-x 3.X项目
- 支持触屏的jQuery响应式幻灯片展示插件Image Lightbox
- asdasda
- 轻松让wifi改装件控制其他信号电路通断
- 为什么析构函数要定义为虚函数
- Android CardView和Palette
- 非常详细GC学习笔记
- 混迹C++ 之reinterpret_cast和static_cast
- html a标记的js使用
- 对事件作出反应
- P2P平台项目建设几点注意事项
- DuiDesigner修改:增强选择元素后的用户体验
- 新人学ruby---print、puts和p的区别