博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承虚函数单层需继承的内存图(VC6.0)
阅读量:6120 次
发布时间:2019-06-21

本文共 994 字,大约阅读时间需要 3 分钟。

上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下继承虚函数

继承关系图

继承和虚函数

 
 
class A{	virtual aa(){};};class B : public virtual  A{	char j[3];//入加一个变量是为了看清楚class中的vfptr放在什么置位public:	virtual bb(){};};class C : public B{	char i[3];public:	virtual cc(){};};#include 
using namespace std;int main(){ A aa; int a = sizeof(aa); B bb; int b = sizeof(bb); C cc; int c = sizeof(cc); printf("a= %d\nb=%d\nc=%d\n",a,b,c); return 0;}

    上面是内存图

    继承和虚函数

    继承和虚函数继承和虚函数

    继承和虚函数

    群体的单步调试内存图如下

    继承和虚函数

    每日一道理
美丽是平凡的,平凡得让你感觉不到她的存在;美丽是平淡的,平淡得只剩下温馨的回忆;美丽又是平静的,平静得只有你费尽心思才能激起她的涟漪。

    图一   单层虚继承刚到aa时的图

    继承和虚函数

    图二   单层继承aa运行完以后的图

    从图一可以看出,变量在内存的置位都定下来了(例如bb.j、cc.i、cc.B.j,还有与类有关的a、b、c三个变量),与虚函数有关的aa._vfptr、bb._vfptr等的内存值还是空的(0xcccccccc)然后到了图二以可就看出aa._vfptr的值就定确了,这说明虚函数表针指(vptr)在运行时才定确真正的值。

    继承和虚函数

    图三   单层虚继承刚到bb时的图

    继承和虚函数

    图四   单层继承bb运行完以后的图

    图三与图四的较比可以看出,虚函数针指_vfptr或者vptr在运行时才定确,一样指向virtual base class的类的偏移或者针指也是在运行时定确。

    继承和虚函数

    图五   单层虚继承刚到aa时的图

    继承和虚函数

    图六   单层继承aa运行完以后的图

    继承和虚函数

    图七   虚函数表

    虚函数表在程序代码以后,旁边以四个节字的0开隔。

    

文章结束给大家分享下程序员的一些笑话语录: 苹果与谷歌之争就是封闭收费与自由免费思想之争。(别急着把google来膜拜哦?那可是一家公司,以赚钱为目标的公司!当年我Party就是这样把广大劳动人民吸引过来的。今天的结果你们都看到了。)

你可能感兴趣的文章
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>