C 關鍵字static的用法

2022-10-10 16:30:15 字數 1013 閱讀 6617

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 靜態物件的資料在全域性是唯一的,一改都改。如果你想要處理的東西是整個程式中唯一的...