关于类大小的困惑(此类含虚函数、此类虚继承)
EX1:****************************************************************************
class A
{
public:
char a[3];
virtual void aa(){};
};
class B : virtual public A
{
public:
char b[3];
virtual void bb(){};
};
class C : virtual public B
{
public:
char c[3];
virtual void cc(){};
};
int main()
{
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
cout << sizeof(C) << endl;
return 0;
}
/*
* 8 16 24
*/
EX2:****************************************************************************
class A
{
public:
char a[3];
virtual void aa(){};
};
class B : public A
{
public:
char b[3];
virtual void bb(){};
};
class C : public B
{
public:
char c[3];
virtual void cc(){};
};
int main()
{
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
cout << sizeof(C) << endl;
return 0;
}
/*
* 8 12 16
*/
EX3:****************************************************************************
class A
{
public:
// char a[3];
virtual void aa(){};
};
class B : virtual public A
{
public:
// char b[3];
virtual void bb(){};
};
class C : virtual public B
{
public:
// char c[3];
virtual void cc(){};
};
int main()
{
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
cout << sizeof(C) << endl;
return 0;
}
/*
* ...
*/
EXN:****************************************************************************
..............................................................................................................................................................................................................................................................
..............................................................................................................................................................................................................................................................
迷惑不懂,求懂的人讲解下?以上情况中的 虚不虚继承的区别在哪?有没有char a[]等数据的区别等等区别?

浙公网安备 33010602011771号