关于类的长度

今天早上本想研究下运行时绑定,没想到研究了下类的长度,先贴下图片看下结果:

关于类的长度
 

关于类的长度
我也定义了一个空类,长度为一,下面是我的总结:

当类为空时,系统也要分配一个实例的内存,长度为一;有虚函数的时候,因为有虚指针,所以系统也要分配一个(void)的长度是4,派生类则不再分配的虚指针空间,与父类是共用的,因为我的基类里还有个int类型的变量所以,长度为8,派生类A里也重新定义了个Int变量,所以又多4长度,类里函数不占长度,所以派生类C和基类A一样。

然后请教了某个大神,贴一下他给的总结:

对的也得遵循字节对齐

类大小归纳以下几个原则:

1.类的大小为类的非静态成员数据的类型大小之和,也就是说静态成员数据不作考虑。

2.普通成员函数与sizeof无关。

3.虚函数由于要维护在虚函数表,所以要占据一个指针大小,也就是4字节。

4.类的总大小也遵守类似class字节对齐的,调整规则。

5.说明子类只是共用父类的虚函数表,因此一旦父类里有虚函数,子类的虚函数将不计入sizeof大小

OK,睡觉。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不识君的荒漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值