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
自己看看这个系列的博文,讲得很透彻!