static的使用總結

2022-07-03 14:48:07 字數 1470 閱讀 1624

全域性變數前加上關鍵字static,全域性變數就定義成乙個全域性靜態變數.,全域性靜態變數儲存在靜態儲存區,在整個程式執行期間一直存在。全域性靜態變數在程式執行之前就存在。

初始化:未經初始化的全域性靜態變數會被自動初始化為0(自動物件的值是任意的,除非他被顯式初始化)。

作用域:全域性靜態變數在宣告他的檔案之外是不可見的,準確地說是從定義之處開始,到檔案結尾。

在區域性變數之前加上關鍵字static,區域性變數就成為乙個區域性靜態變數。區域性靜態變數再程式執行到作用域時候,就會存在。

區域性靜態資料再記憶體中的靜態儲存區。

初始化:未經初始化的全域性靜態變數會被自動初始化為0(自動物件的值是任意的,除非他被顯式初始化)。

作用域:作用域仍為區域性作用域,當定義它的函式或者語句塊結束的時候,作用域結束。但是當區域性靜態變數離開作用域後,並沒有銷毀,而是仍然駐留在記憶體當中,只不過我們不能再對它進行訪問,直到該函式再次被呼叫,並且值不變。

在函式返回型別前加static,函式就定義為靜態函式。函式的定義和宣告在預設情況下都是extern的,但靜態函式只是在宣告他的檔案當中可見,不能被其他檔案所用。

函式的實現使用static修飾,那麼這個函式只可在本cpp內使用,不會同其他cpp中的同名函式引起衝突。

warning:不要再標頭檔案中宣告static的全域性函式,不要在cpp內宣告非static的全域性函式,如果你要在多個cpp中復用該函式,就把它的宣告提到標頭檔案裡去,否則cpp內部宣告需加上static修飾。

靜態成員可以實現多個物件之間的資料共享,並且使用靜態資料成員還不會破壞隱藏的原則,即保證了安全性。

靜態資料成員不能在類中初始化,實際上類定義只是在描述物件的藍圖,在其中指定初值是不允許的。也不能在類的建構函式中初始化該成員,因為靜態資料成員為類的各個物件共享,否則每次建立乙個類的物件則靜態資料成員都要被重新初始化靜態成員可以被初始化,但只能在類體外進行初始化。 一般形式:資料型別 類名::靜態資料成員名=初值。

靜態成員不可在類體內進行賦值,因為它是被所有該類的物件所共享的。你在乙個物件裡給它賦值,其他物件裡的該成員也會發生變化。

靜態成員屬於整個類所有,不需要依賴任何物件,它在物件中不占用儲存空間。

靜態成員仍然遵循public,private,protected訪問準則。

可以通過類名直接訪問public 靜態成員。

可以通過物件名訪問public靜態成員。

靜態成員函式和靜態資料成員一樣,它們都屬於類的靜態成員,它們都不是物件成員,所以對靜態成員的引用不需要用物件名。呼叫靜態成員函式,使用如下格式:《類名》::《靜態成員函式名》(《參數列》);

靜態成員函式可以直接訪問靜態成員變數。

靜態成員函式在類外實現時候無須加static關鍵字,否則是錯誤的。

靜態成員函式沒有this指標,它不能返回非靜態成員。

非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員。

靜態成員函式不能訪問非靜態成員函式和非靜態資料成員。靜態函式成員必須通過引數列表中傳遞類的物件指標來實現對類物件的非靜態成員變數進行訪問。

static 使用總結

第 一 類靜態成員 1.初始化 靜態成員變數必須初始化 類的靜態成員可以是公有的也可以是私有的 無 私必須在外部初始化。如 int a i 1 必須這樣初始化 初始化完畢才能賦值 2 訪問 公有的外部可以直接訪問 a b 5 私有的則不可以。3 類成員間呼叫 類成員函式可以呼叫靜態成員變數和靜態成員...

static使用總結

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種在c c 語言中使用,第三種只在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 一 static變數 1.靜態區域性變數 靜態區域性變數屬...

c語言之static的使用總結

1,static定義區域性變數和普通區域性變數的對比 static定義的變數具有記憶功能,可以儲存上次修改的數值,而普通區域性變數沒有此功能。includestatic int g j 0 void fun s static void fun s void fun g static int main...