sizeof 计算类大小时需注意的几点
2015-08-04 09:59
190 查看
1. 空类大小为1。
2. 非虚函数不计算大小。
3. 虚函数大小为4,不管有多少个虚函数,大小都为4,因为虚函数的存在需要维护一个虚表,在类中会有个指针,指针的大小是4,大概是这样。父类中有虚函数时,派生类中的虚函数不再计算大小,因为派生类会共享父类的指向虚表的虚函数指针。
4. 注意成员变量内存对齐,比如一个类中有char a; int b两个成员变量,那么类的大小时8,按4字节对齐。当成员变量大小均小于4字节时,按小的对齐,当有成员变量大于4字节时,按4字节对齐。
5. 静态成员变量不计算在类的大小中。
6. 派生类中也不计算父类中静态成员变量的大小,因为静态成员变量存放一个全局变量中,不管派生多少变都只有一个实体。
7.计算派生类的大小等于派生类本身的成员变量大小加上父类的大小。
2. 非虚函数不计算大小。
3. 虚函数大小为4,不管有多少个虚函数,大小都为4,因为虚函数的存在需要维护一个虚表,在类中会有个指针,指针的大小是4,大概是这样。父类中有虚函数时,派生类中的虚函数不再计算大小,因为派生类会共享父类的指向虚表的虚函数指针。
4. 注意成员变量内存对齐,比如一个类中有char a; int b两个成员变量,那么类的大小时8,按4字节对齐。当成员变量大小均小于4字节时,按小的对齐,当有成员变量大于4字节时,按4字节对齐。
5. 静态成员变量不计算在类的大小中。
6. 派生类中也不计算父类中静态成员变量的大小,因为静态成员变量存放一个全局变量中,不管派生多少变都只有一个实体。
7.计算派生类的大小等于派生类本身的成员变量大小加上父类的大小。
相关文章推荐
- floor(x) 函数
- ConCurrent in Practice小记 (3)
- 使用MyEclipse 9.0 创建 struts2 的HelloWorld 工程
- 布局1
- easyui tabs update 强制刷新页面
- 南邮 OJ 1055 叙拉古猜想
- Difference between Properties and Attributes in JavaScript
- iOS contentOffset和contentInset的区别
- std::function与std::bind 函数指针
- Android 批量打包
- leetcode 233 Number of Digit One
- Android分析主线程与子线程,以及子线程之间相互通信
- Interleaving String
- poj 1144 割点
- js之iframe子页面与父页面通信
- Java通过调用FFMPEG获取视频时长
- 初识Axure
- 关于Android的HAL的一些理解
- Android GUI之View测量
- JAVA 生成PDF报表()