继承 虚继承 结构体 为内存布局抛砖引玉

本文探讨了C++中空类的大小、非虚继承和虚继承时派生类的内存布局。通过实例解释,指出非虚继承的空类大小为1,而虚继承的空类大小可能为4或8,取决于编译器。对于多重虚继承,某些编译器会使用一个指针指向包含所有直接基类指针的虚基类表。
摘要由CSDN通过智能技术生成

看了太多人问的  “定义体为空的类的大小是多少?以及不同的继承类型的基类以及虚继承得到的类的大小”,云云之类的。太多这些问题了,今天笔者希望用最简单易懂的语言以及最清晰的图解告诉大家,这其实并不高深。

注:下面的struct换成class依旧成立。


问题 1:空类的大小是多少?

例如: struct A { };    //  答案是1 , 一个显而易见的道理,如果利用该类型定义两个对象,即

A  a, b; 那么a和b的地址总该有吧,并且两者地址应该不一样吧,因此编译器为其分配一个字节的大小。


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值