Comme le titre décrit, j'ai 3 classes:Comment éliminer une copie de variable dans la classe de base avec héritage multiple?
#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;
}
Quand je vérifie le sizeof (premier) est de 4 qui font sens pour moi. Mais je ne sais pas pourquoi sizeof (second) est 16 (j'ai supposé 4 + 8 = 12! = 16), et sizeof (combine) est 24 (4 + 4 + 8 = 16! = 24). Quelqu'un pourrait-il m'aider à expliquer cela? En outre, lorsque « combinent » multiples hérite de « premier » et « deuxième », je compris que sa taille comprend deux données (int) à partir de « premier » et de la classe « deuxième » ; ce qui est un gaspillage de mémoire. Existe-t-il un moyen de contourner ce problème, c'est-à-dire que «d'abord» et «deuxième» partagent une copie de «données»?
vous pourriez être intéressé par ce [proposition de la pile-échange] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "Code Review"). – greatwolf