[读书笔记]深度探索C++模型_第一章_关于对象

现在仍占有优势的C++对象模型,Nonstatic data members,被配置于每一个class object之内,static data menbers则被存放在个别的class object之外。Static 和 nonstatic function members 也被放在个别的 class object 之外。
C++对象模型

需要多少内存才能够表现一个class object?一般而言
- 其nonstatic data members 的总和大小。
- 加上任何由于alignment(alignment就是将数值调整到某数的倍数)的需求而填补上去的空间。(32、64位整数倍)
- 加上为了支持virtual而由内部产生的任何额外负担(overhead)。虚函数指针,如果继承有多个虚函数,就会有多个虚函数指针。

额外来说:空类的实例是1字节(如果是0的话,空类的数组就无法表示了)。有虚函数sizeof(ptr)是8字节(在64位系统上,就是一个指针的大小)

关键词的困扰:
先声明,用class,如果你不用C的话。
C struct 在 C++ 中的一个合理的用途,是当你要传递“一个复杂的class object的全部或部分”到某个C函数去时,struct声明可以将数据封装起来,并保证拥有与之兼容的空间布局。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值