读书笔记: effetive C++ 条款14:总是让base class拥有virtual desctructor , 体现了virtual对多态的支持
来源:互联网 发布:创意礼品 知乎 编辑:程序博客网 时间:2024/06/05 15:36
virtual 的作用是多态,virtual表可以在running time时候判断指针指向的具体类型
Class base{
base();
~base();
}
Class Derived : public base
{
Derived();
~Derived();
}
Derived* p = new Derived ;
delete p;
以上代码隐含了调用下面的函数
1)基类的构造函数
2)派生类的构造函数
3)派生类的析构函数
4)基类的析构函数
但是如果指针是基类类型的,但是指向派生类的
Base* p = new Derived ;
delete p;
以上代码隐含了调用下面的函数
1)基类的构造函数
2)派生类的构造函数
3)基类的析构函数
这是因为析构函数没有定义为虚函数,没有虚函数表建立, 所以就没有办法实现多态。
如果基类的析构函数定义为虚函数,那么无论指针是什么类型的,只要是指向派生类,那么在析构的时候都会调用派生类和基类的析构函数。
所以说派生和virtual 并无直接关系。
0 0
- 读书笔记: effetive C++ 条款14:总是让base class拥有virtual desctructor , 体现了virtual对多态的支持
- 条款二十四:了解virtual functions、multiple inheritance、virtual base class、runtime type identification的成本
- virtual base class的问题
- 虚基类(Virtual Base Class)
- virtual base class
- 虚基类(virtual base class)
- C++虚基类(virtual base class)
- virtual base class(虚基类)
- 虚基类(virtual base class)
- 读书笔记《Effective C++》条款35:考虑virtual函数以外的其他选择
- 读书笔记《Effective C++》条款36:绝不重新定义继承而来的non-virtual函数
- 关于Virtual Base Class的几点说明
- 读书笔记《Effective C++》条款07:为多态基类声明virtual析构函数
- 读书笔记《Effective C++》条款09:绝不在构造和析构过程中调用virtual函数
- 条款07:为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes.)
- 对含有virtual function的class求sizeof
- 永远让基类拥有virtual的destructor
- Effective C++ 读书笔记 条款36:绝不重新定义继承而来的 non-virtual 函数
- 最全markdown编辑器的使用方法
- 关于微信的领头人张小龙
- 小白兔与好企业
- C/C++ 整型提升(Integral Promotion)
- DICOM:基于fo-dicom的简易DICOM Viewer
- 读书笔记: effetive C++ 条款14:总是让base class拥有virtual desctructor , 体现了virtual对多态的支持
- 一个小老板眼中的开发工具— PowerBuilder 杂谈(转)
- 大型网站架构演变和知识体系
- ChainMapper/ChainReducer的实现原理
- 有关项目的几点思考
- BurnBurnBurn~
- monkeyruner log
- 为打开新Activity动作添加动画效果
- 修改slidingmenu仿QQ5.0侧滑菜单