C++派生类对象内存布局

  • 问题提出:

类C继承自基类A和基类B,现在有一个类C的对象,将其地址分别转换为基类A的指针和基类B的指针,那么这两个指针的值相等吗?

  • 答案:
不相等。
  • 解释:
由上图可见,派生类对象在内存中是把各个基类相关信息放在一起,然后存放自己的成员。类C对象地址转换为基类A和基类B的指针后它们的值如上图所示。
  • 下面是一个验证程序:
  • 执行结果:
 pa != pb
&a != &b
&a == pa
&b == pb
A.a=1
A.b=2
BASE A
B.c=3
B.d=4
BASE B
A.a=1
A.b=2
DERIVE C
B.c=3
B.d=4
DERIVE C
pa=2293536
pb=2293548
&c.e=2293560
sizeof A=12
sizeof B=12
sizeof C=28
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值