首页 > 其他 > 详细

sizeof求类的大小

时间:2015-06-03 00:51:58      阅读:262      评论:0      收藏:0      [点我收藏+]

用sizeof求类的大小,http://blog.csdn.net/szchtx/article/details/1025400,这篇博文给出了非常详尽的举例介绍。

但是细心的我还是发现了一个小瑕疵,那就是对如下例子求sizeof(B),在VS下是16不是12!

class A
{
public:
    int a;
private:
    char b;
};
class B : public A
{
public:
    int d;
    char c;
	
};

以下是我根据上机实验结果,总结的精华要点,希望从此以后不再为sizeof求类大小而烦忧:

1. sizeof(空类)=1,但当空类作为继承树非叶子类求大小的情况下,在计算的时候=0

2. 继承树中,不管是虚继承还是普通继承,同一层级中,不管虚多少次,只能算一次+4,不算的等同于注掉

3. 继承树中,不管是虚继承还是普通继承,跨层级凡是发现虚函数同名的,只能算一次,不算的等同于注掉

4. 虚继承,在继承树中每虚继承一次+4

5. 虚继承,跨层级只要虚函数不同名,就各自分别算一次+4

6. 普通继承,跨层级不管有多少虚函数,只能算一次+4,不算的等同于注掉

7. 静态变量不在类大小计算范围之内

8. 注意偏移对齐的问题,结果为4的整数倍

sizeof求类的大小

原文:http://www.cnblogs.com/researcher/p/4548089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!