C++运行时多态之虚表
来源:互联网 发布:阿里云服务器续费优惠 编辑:程序博客网 时间:2024/05/29 03:03
C++三大特点是封装、继承、多态,这次我们来聊聊多态的情况之一“运行时多态”。运行时多态的实现靠虚函数,虚函数的具体实现又依赖虚函数表(虚表)。所以,虚表才是关键所在,下面从四种情况总结一下虚表的具体实现:
1.一般继承(无虚函数覆盖)
1)虚函数按照其声明顺序放于表中。
2)父类的虚函数在子类的虚函数前面。
2.一般继承(有虚函数覆盖)
1)覆盖的函数被放到了虚表中原来父类虚函数的位置。
2)没有被覆盖的函数依旧。
3.多重继承(无虚函数覆盖)
1)每个父类都有自己的虚表。
2)子类的成员函数被放到了第一个父类的表中。(所谓的第一个父类是按照声明顺序来判断的)
4.多重继承(由虚函数多态)
原父类虚函数表中的函数的位置被替换成了子类的函数指针。这样,我们就可以任一静态类型的父类来指向子类,并调用子类的f()了。
0 0
- C++运行时多态之虚表
- objective-C运行时编程指南之运行时交互
- C语言之优化运行速度
- C语言之测试程序运行时间
- 确保只有一个程序实例运行(C#)之解决方案
- 6410之写跳转到c函数中运行
- 6410之写跳转到c函数中运行
- Objective-C运行时编程指南之介绍
- objective-C运行时编程指南之消息
- Objective-C运行时编程指南之动态方法决议
- Objective-C运行时编程指南之消息转发
- objective-C运行时编程指南之代理对象
- objective-C运行时编程指南之类型编码
- Object-c消息之运行时动态绑定
- Objective-C Runtime 运行时之三:方法与消息
- Objective-C Runtime 运行时之三:方法与消息
- Objective-C Runtime 运行时之四:Method Swizzling
- Objective-C Runtime 运行时之五:协议与分类
- Delphi编程实用小技巧(三)——经典listbox的拖拽
- 2、XML配置文件
- 第 8 章 DOM 对象,控制 HTML 元素
- 线性表的链式存储结构
- 识别输入装置ID与InputDevice装置(Improved event management)
- C++运行时多态之虚表
- 对象
- VMmare12.0.0安装RedHat6.5使用net模式上网
- [POJ 3007]Organize Your Train part II[Hash][Trie]
- 第三方SDK:JPush SDK Eclipse
- 排序算法后记
- 3、XML映射文件Mapper
- D10
- js模拟点击事件