sizeof操作符返回操作数的大小,现在我们来单独对class的sizeof操作进行分析。
首先,对于空类:
class BASE
{
};
对其进行sizeof操作: sizeof(BASE) ==1
ps:其实此时的BASE并不是空类,编译器为它生成了3个默认的函数,但不在本文的范畴之内。
有些人对这个1的计算很是不解,很多人觉得应该是0,其实我们可以这样考虑,c++对每个类允许使用new操作来生产对象,那么一个0大小的new操作是无意义的,系统无法知道一个0大小的空间应该返回什么给应用程序。
所以class的最小大小就是1
经过试验可以很容易得到类的大小和类的继承无关系。
只有类成员变量才对sizeof有影响,包括引用变量也是有大小的。
静态的成员变量不会增加sizeof的结果。
以上结果是在XP win32操作系统下,VS2008实验得出。
本文探讨了C++中类的sizeof操作符的行为,特别是针对空类和成员变量的影响。文中解释了空类的sizeof为何等于1,并指出类的大小与其继承结构无关,而仅由成员变量决定。
75万+

被折叠的 条评论
为什么被折叠?



