简单的继承与虚继承在内存中的存储方式

以下均在VS2013 中测试说明
对于查看方式:cl /d1 reportSingleClassLayout类名 源文件名
虚函数指针(vfptr)指向虚函数表,虚函数表中存储函数地址
虚基表指针(vbptr)指向虚基表,虚基表中存储着继承变量的偏移量
虚函数指针和虚基表指针是两个不同的概念
只有虚继承才会有虚表指针,只要有虚函数就会有虚函数指针。
普通继承,子类不管是否新增虚函数,子类不会创建自己的虚函数指针。而是继承了父类的虚函表,虚函数指针显示的是来自继承的父类的(除非父类没有虚函数,子类有虚函数,此时虚函数指针属于子类自己)。
虚继承,只要是虚继承,一定有虚基表指针,子类新增虚函数的话,子类会创建属于自己的单独的虚函数指针。
图1
图2
图3
图4
图5
图6
图7
图8
图9
图10
图11
图12

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值