码迷,mamicode.com
首页 > 其他好文 > 详细

sizeof求类的大小

时间:2015-06-03 00:52:13      阅读:128      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!