首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

sizeof(类)解决方法

2012-05-22 
sizeof(类)谁能帮忙详细解释一下,非常感谢对于下面的代码,class X{public:static int g_iMem}class Y{pu

sizeof(类)
谁能帮忙详细解释一下,非常感谢

对于下面的代码, 
class X
{
public:
static int g_iMem;
};

class Y
{
public:
virtual void Feature();
char m_c1;
};

class Z : public Y
{
public:
char m_c2;
X x;
int m_i1;
};
假设环境是一个32位系统,则运行时,sizeof(Z)的值是()
(A)8
(B)12
(C)16
(D)20


[解决办法]
答案是12。

m_c2是1个字节,m_i1占4个字节,x占1个字节,加上继承的Y中的虚函数表4个字节,一共10字节,再考虑内存对齐,按4的倍数算,就是12字节
[解决办法]
16 g++下
[解决办法]
谁能帮忙详细解释一下,非常感谢

对于下面的代码,
class X
{
public:
static int g_iMem;
};

class Y
{
public:
virtual void Feature();
char m_c1;
};

class Z : public Y
{
public:
char m_c2;
X x;
int m_i1;
};
假设环境是一个32位系统,则运行时,sizeof(Z)的值是( )
m_c2 4
x 4 //x实际上是空的,无实际内容,空指针占4bit
m_i1 4
y = virtual(4) + m_c1(2)= 8 //因为虚拟函数只占虚拟函数表的首指针
所以 最终结果是 D
4 + 4 + 4 + 8 = 20
(A) 8
(B) 12
(C) 16
(D) 20
 

[解决办法]
http://blog.csdn.net/pathuang68/article/details/4101970
自己看看这个系列的博文,讲得很透彻!

热点排行