靜態變量

1.static局部變量:記憶功能和文件作用域,默認初始化。

2.static全局變量:內部連接(static變量、const變量和inline函數均爲內部連接類型),文件之間不會重名。

3.static成員變量:所有對象(包括子類對象)共享,一定需要再類體外初始化,但在類體外初始化時,無需再加上static關鍵字,!!!static是用於聲明的變量,這點與inline關鍵字正好相反,inline關鍵字是用於實現的變量。特殊特性:static成員對象允許非前向聲明;const成員函數可以修改static成員變量;static成員變量可以作爲形參類型的默認實參。

4.static成員函數:所有對象(包括子類對象)共享,可以在類內或類外初始化;非static成員函數可以調用static成員函數或static成員變量;static成員函數不可以調用非static成員。!!!static成員函數不能聲明爲virtual或者const型。!!!static成員函數不能聲明爲virtual或者const。


另外,附上對變量(函數)的聲明和使用的理解:

1.變量的類型分爲內部連接類型(const和static類型變量)和外部連接類型(非const和static類型變量)--內部連接類型可以在不同的文件中聲明相同名字的變量;外部連接類型只在一個文件裏面定義,在另外的文件裏面聲明。

2.對於外部連接類型變量,在文件中的聲明格式爲--extern int a;

3.對於外部連接類型函數,在文件中的聲明格式爲--[extern] void func();


類中靜態static成員和常量const成員的初始化工作:

1.常量const成員的初始化工作必須在初始化列表中完成。

class C{
public:
	C():key(0){}
	~C(){}
private:
	const int key;
};

void main(){
	C c1;
}

2.靜態static成員的初始化工作必須在類體外部完成初始化。

class C{
public:
	C(){}
	~C(){}
private:
	static int key;
};

int C::key=0;

void main(){
	C c1;
}

3.靜態常量static const成員的初始化有兩種方式:在類體內部聲明處定義;在類體外部重新定義。

第一種方式:

class C{
public:
	C(){}
	~C(){}
private:
	static const int key=0;
};

void main(){
	C c1;
}

第二種方式:

class C{
public:
	C(){}
	~C(){}
private:
	static const int key;
};

const int C::key=0;

void main(){
	C c1;
}

~!~

發佈了25 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章