1、cpp檔案中的全域性靜態變數
全域性內的宣告:
static int a=0;
這樣的靜態全域性變數就只能被該cpp檔案所用,不能被其他cpp檔案共享。
若不宣告static:
int a=0;
這樣的全部變數既不能保證a能被其他cpp檔案共享,又不能保證不能被其他cpp檔案共享。不建議這樣使用,最好加extern:
extern int a=0;
2、靜態區域性變數
int f()
static int a=1;
靜態區域性變數儲存在靜態變數區,而不是棧中,所以生存週期是整個程式的週期,而不是函式的週期。只申請一次記憶體,然後下次呼叫該函式時,還儲存著上次a的值。
3、cpp檔案中的全域性靜態函式
在cpp內宣告:
static int func();
和cpp中的全域性靜態變數一樣,該函式的作用域僅為該cpp檔案,只能為本cpp所用。若要給多個cpp檔案呼叫,則放在標頭檔案中,不要加static。
4、類的靜態成員
class a
private:
static int a;
靜態成員作用域為類a,變數a並不為某個例項所有,而是為整個類有所,是類a的共享成員變數。靜態成員a必須在cpp中初始化:
int a::a =0; //注意:這裡沒有static修飾,因為static是宣告性關鍵字
5、類中的靜態成員函式
class a
private:
static void func(int);
實現該函式時同樣無需關鍵字static,因為static是宣告性關鍵字;
類的靜態成員函式是該類範疇內的全域性函式,不能訪問該類的私有成員,智慧型訪問該類的靜態成員,不需要例項即可呼叫,直接a::func(9);
靜態成員函式可以繼承和覆蓋,不能是虛函式。
static沒有this指標。
總結:其實static的原則是他在記憶體的靜態變數區,所以生存週期不一樣,其次他只申請一次,所以不會被覆蓋。
static關鍵字用法
static修飾區域性變數 static修飾全域性變數 二 c 中的static關鍵字 類中的static關鍵字 1 static 資料成員在類內資料成員的宣告前加上關鍵字static,該資料成員就是類內的靜態資料成員。include using namespace std class myclas...
Static關鍵字的用法
一 如果想不建立乙個類的例項物件就訪問改類的變數或方法,可以在改變量或方法前 static關鍵字 class man static string 男 string name public showname system.out.println name class call public stati...
static關鍵字的用法
static 靜態變數 1 static 修飾乙個屬性,放在方法區裡面 公共的區域 是類變數,隨著類的載入而載入static變數,該變數只有乙份,2 靜態資料不屬於物件,屬於類。3 static修飾方法 用類名呼叫。4 靜態物件的資料在全域性是唯一的,一改都改。如果你想要處理的東西是整個程式中唯一的...