再談sizeof

#include <bits/stdc++.h>

using namespace std;

int c;
static int d;

class e
{
	public:
	e()
	{
		cout<<"e"<<endl; 
	}

		int f;
		static int g;	//類中的static變量不會計入 sizeof中 
//	private:	聲名爲private的函數繼承中不可用 
	void pri()
	{
		cout<<"base_e"<<endl;
	} 
	~e()
	{
		cout<<"d_base_e"<<endl;
	} 
};

class ano_e : public e
{
	public:
	ano_e()
	{
		cout<<"ano_e"<<endl;
	}
};

int main()
{
	int a;
	cout<<sizeof(a)<<endl;
	
	int *b[4];
	cout<<sizeof(*b)<<" "<<sizeof(b)<<" "<<**b<<" "<<sizeof(**b)<<endl; 
	cout<<sizeof(&*b)<<endl;
	 
	 cout<<sizeof(c)<<endl;
	 cout<<sizeof(d)<<endl;
	 
	 cout<<sizeof(e)<<endl;
	 
	 ano_e h;	//繼承類先運行被繼承的構造函數 
	 h.pri();
}


通過運行代碼我們可以看出,靜態變量爲全局變量時,還是會有sizeof值,在類中並沒有值;另外,繼承類時會先運行被繼承類的構造函數,private繼承時會有問題,後面具體再談面向對象設計。

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