對象大小以下代碼打印20,即的sizeof(z)是20.問題上多重繼承,虛基類,並在C++
#include <iostream.h>
class Base
{
public:
int a;
};
class X:virtual public Base
{
public:
int x;
};
class Y:virtual public Base
{
public:
int y;
};
class Z:public X,public Y
{
};
int main()
{
Z z;
cout << sizeof(z) <<endl;
}
然而,如果我在這裏不使用虛擬基類,即用於下面的代碼: 的sizeof(z)是16.
#include <iostream.h>
class Base
{
public:
int a;
};
class X:public Base
{
public:
int x;
};
class Y:public Base
{
public:
int y;
};
class Z:public X,public Y
{
};
int main()
{
Z z;
cout << sizeof(z) <<endl;
}
爲什麼是在第一種情況下的sizeof(z)的多個(20)? 難道不應該是12,因爲基地將被納入 只有Z軸一次?
馬克,你是怎麼產生這種佈局的? – 2008-12-28 17:57:04
如果您指的是表格格式,那只是代碼。我只是猜測內容。我會更詳細地編輯我的答案,並參考ppinsider的答案。 – markets 2008-12-31 00:30:28