关于类大小的困惑(此类含虚函数、此类虚继承)

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[]等数据的区别等等区别?



posted @ 2012-09-29 15:49  XhBinary  阅读(239)  评论(0)    收藏  举报