C 類中的Static關鍵字

2022-04-28 13:57:24 字數 1283 閱讀 6434

靜態成員是可以獨立訪問的,也就是說,無須建立任何物件例項就可以訪問,而靜態成員函式可不建立物件就可以被使用。

或者說靜態函式與一般函式沒有太大的區別,只是訪問有限制,靜態變數跟一般的全域性變數的區別就是訪問有限制。

static變數

static變數不像普通的變數,static變數獨立於一切類物件處在。static修飾的變數先於物件存在,所以static修飾的變數要在類外初始化。因為static是所有物件共享的東西嘛,必須要比物件先存在的

class test

;int test::i = 100;//此句包含了宣告和賦值,初始化不受private和protected訪問限制,但是若是priivate,下面main函式就無法訪問

int main()

好處:用static修飾的成員變數在物件中是不佔記憶體的,因為他不是跟物件一起在堆或者棧中生成,用static修飾的變數在靜態儲存區生成的,所以用static修飾一方面的好處是可以節省物件的記憶體空間。所以一般類const變數一般改為static const變數,可以節省一些空間。

-靜態成員變數屬於整個類所有

-靜態成員變數的生命期不依賴於任何物件,為程式的生命週期

-可以通過類名直接訪問公有靜態成員變數

-所有物件共享類的靜態成員變數

-可以通過物件名訪問公有靜態成員變數

-靜態成員變數需要在類外單獨分配空間

-靜態成員變數在程式內部位於全域性資料區 (type classname::varname = value)

static成員函式

static函式也是類函式,所以在寫定義時也要寫明屬於哪個類。與不同類函式不同的是,它沒有傳入this指標,正因為沒有this指標,所以static類成員函式不能訪問非static的類成員,只能訪問 static修飾的類成員。

靜態成員函式不可以同時宣告為 virtual、const、volatile函式。

類的成員函式有如下特性:    -靜態成員函式是類的乙個特殊的成員函式

-靜態成員函式屬於整個類所有,沒有this指標

-靜態成員函式只能直接訪問靜態成員變數和靜態成員函式

-可以通過類名直接訪問類的公有靜態成員函式

-可以通過物件名訪問類的公有靜態成員函式

-定義靜態成員函式,直接使用static關鍵字修飾即可

c中static關鍵字

看別人的c 會看到很多變數或者函式前面帶有static關鍵字。c中的static和php中的static有很到的不同,在php中static表示靜態化變數,乙個類中的static成員只與類有關,而與類的例項無關。c中的static關鍵字主要用於隱藏 access control 1.隱藏 函式前的s...

C 中static關鍵字

c 的static有兩種用法 面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函式,不涉及類 後者主要說明static在類中的作用。一 面向過程設計中的static 1 靜態全域性變數 在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域性變...

C 中static 關鍵字

c 包含了c的特性和c 的特性,static 自然也具備了這兩者的特性 靜態全域性變數 該變數在全域性資料區分配記憶體 未經初始化的靜態全域性變數會被程式自動初始化為0 自動變數的值是隨機的,除非它被顯式初始化 靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的 靜態區域性變數 在區...