如題介紹了,我有3類:如何消除具有多重繼承的基類中的變量副本?
#include <iostream>
using namespace std;
class first
{
protected :
int data;
public :
first()
:data(1)
{
// empty
}
};
class second : public first
{
protected :
double x;
public :
second()
:first()
{
// empty
}
};
class combine : public first, public second
{
public :
combine()
{
// empty
}
};
int main()
{
combine c;
cout << sizeof(c) << endl;
return 0;
}
當我檢查的sizeof(第一)爲4,其道理給我。但我不知道爲什麼sizeof(second)是16(我假設4 + 8 = 12!= 16),sizeof(combine)是24(4 + 4 + 8 = 16!= 24)。任何人都可以幫我解釋一下嗎? 此外,當從「第一」和「第二」「結合」多重繼承,我意識到,其大小包括從「第一」和「第二」類既數據(int)的;這是浪費記憶。有沒有辦法解決這個問題,即讓'第一'和'第二'共享'數據'的一個副本?
您可能對[棧交換建議]感興趣(http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2「代碼評論」)。 – greatwolf 2011-01-13 10:03:19