虚继承为什么不会出现浪费内存猜想

在这里插入图片描述
一直想不通为什么看人家画内存图都会把虚拟成员放到最后,如何通过虚表确定虚拟变量唯一的呢?
大概是在初始化之前编译器已经根据代码分配好了内存,如上,B和C都虚继承于A,也许D继承于B,C
,这样D的内存分布图其实已经编译器大致构画好了。a的变量也许不在最下面,反正在一个位置吧;然后从下依次往上是d的变量,c,b,初始化的时候反着来,额b和c对于a的偏移量怎么确定的啊!暂且还是放在最下面吧公共变量,反正B,C在D中有个先后顺序,于是对于编译器在生成内存时,遇到vtural继承,比如B中有一个intC,中有一个int,D中有一个int,A有一个int,那么B碰到虚继承中的变量就会有一个虚指针根据内存的大小指向虚变量而不是在内部复制它,偏移量为20,B和C只是
在这里插入图片描述
相差20,BC只是相差了一个D,是虚继承的话就可以唯一确定一个共有变量的地址于是通过vtrual技术搞定了菱形问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值