C++类对象存储空间备忘录

详细的参看《C++对象模型》

C++98标准规定的类存储空间如下:

1.出于执行效率的考虑,所有的成员函数都在编译时期转换为普通函数,所以不占运行期类内存空间;

2.非静态成员,根据数据类型分配相应空间,顺序不确定,目前大部分编译器都按声明顺序分配;

   静态成员,在全局数据区,不占类存储空间。

3.存在虚函数的,由于虚函数是运行期绑定,必须分配运行期内存空间,考虑提高存储空间,采用统一的虚函数表

   存储该类的所有虚函数,而所有类对象会添加一个指向该表的指针vptr;

4.存在继承关系,派生类会增加基类的存储空间(不是全部可见);

5.如果是虚继承,则会在派生类增加虚基类的索引指针,保证只有一份拷贝;

6.空间对齐,处于硬件处理效率的考虑(最大化数据通路传输能力)#pragma pack(n),一般32位处理器,n=4;

  但是空类不作对齐处理,会增加一个char成员,即为1Byte,目的是为了区分不同空类对象;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值