sizeof Class類的對象的大小

當類a爲空時,c繼承a,c有虛函數時,c只增加一個指針的大小(4);

當a不爲空時,c繼承a,c有虛函數時,c首先把a中的成員當成自己的,再增加一個指針大小。

#include<iostream>
using namespace std;
class a {};
class b{
	virtual void fun()=0;
};
class c:public a{
	/*virtual void fun()=0;*/
	virtual void fun(){};
};
class d:public b,public c{};
int main()
{
	cout<<"sizeof(a)"<<sizeof(a)<<endl;
	cout<<"sizeof(b)"<<sizeof(b)<<endl;
	cout<<"sizeof(c)"<<sizeof(c)<<endl;
	cout<<"sizeof(d)"<<sizeof(d)<<endl;
	return  0;}


#include<iostream>
using namespace std;

class a {
public:
	char m;
	int n;
};
class b{
	virtual void fun()=0;
};
class c:public a{
	/*virtual void fun()=0;*/
	virtual void fun(){};
};
class d:public b,public c{};
int main()
{
	cout<<"sizeof(a)"<<sizeof(a)<<endl;
	cout<<"sizeof(b)"<<sizeof(b)<<endl;
	cout<<"sizeof(c)"<<sizeof(c)<<endl;
	cout<<"sizeof(d)"<<sizeof(d)<<endl;
	return  0;}

sizeof 類或struct的對象大小,應注意一下幾點:

1.爲類的非靜態成員數據的類型大小之和.

2.由編譯器額外加入的成員變量的大小,用來支持語言的某些特性(如:指向虛函數的指針).

3.爲了優化存取效率,進行的邊緣調整(對齊).

4 與類中的構造函數,析構函數以及其他的成員函數無關.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章