在类当中,如果什么都没有,那么该类会占用1个字节的空间(如果有其他的成员变量,那么这1个字节将不会占用)
如果只有成员函数,那么还是只占用1个字节,因为类函数不占用空间
如果有虚函数存在,因为需要虚函数表,所以占用4个字节
成员变量指针类型占用4个字节(32位)或8个字节(64位),int占用4个字节,char占用1个字节
如果出现static变量,因为static变量储存在静态区当中,是一个共享的量,所以不需要为其开内存空间
若需要对齐时,需要补位
总结:
不需要空间:static变量,成员函数。
1个字节:char变量
4个字节:int变量,虚函数
如果类中成员都不需要空间,那么给1个字节
最后进行对齐补位
例题:
在32位的系统下,代码如下:
class CTest { public : CTest():m_chData(‘\0’),m_nData(0){} mem_fun(){} private : char m_chData; int m_nData; static char s_chData; }; char CTest::s_chData=’\0’;
请 问: (1)若按4字节对齐sizeof(CTest)的值是多少? ans:12 (2)若按1字节对齐sizeof(CTest)的值是多少? ans:9 |
版权声明:本文为qq_27398311原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。