關於靜態成員和靜態成員函式

2021-07-05 19:48:01 字數 849 閱讀 5521

一般的情況下我們為了實現資料的共享,通常設定變數為全域性變數和設定成靜態成員變數,但是一般的情況因為全域性變數的安全性不高,往往採用靜態成員變數,靜態成員變數一般以static 開頭,static 成員變數屬於類,不屬於某個具體的物件,它不會隨著物件的建立而產生,也不會因物件的撤銷而釋放記憶體。static 成員變數只有初始化後才可以使用,否則會出現連線錯誤。初始化時可以不加static ,但是必須被 public privater protact 修飾,static 的記憶體空間是在初始化時才分配的。

對靜態成員的幾點說明:

1) 乙個類中可以有乙個或多個成員變數,所有的物件都可以共享這些靜態成員變數,並可以引用它。

2) static 成員變數和普通的static 變數一樣,編譯時在靜態資料區分配記憶體,到程式結束時才釋放記憶體。

3)成員變數必須初始化,並且必須在類體外進行 int student  :: num = 1; 當不賦值時預設賦值為 0.

4)static 成員變數既可以通過類來訪問,也可以通過物件來訪問。

在類中,static 除了宣告靜態成員變數,還可以宣告靜態成員函式,但是靜態成員函式只能訪問靜態成員變數,而不能訪問所有的變數。

在靜態成員變數和普通變數的區別是非靜態成員函式有this 指標,而靜態成員函式沒有this指標,由此決定了靜態成員函式不能訪問本類中的非靜態的成員變數。

靜態成員函式可以直接引用本類中的靜態資料成員,因為靜態成員同樣是屬於類的,可以直接引用。在c++程式中,靜態成員函式主要用來訪問靜態資料成員,而不訪問非靜態成員。  如果要在類外呼叫 public 屬性的靜態成員函式,要用類名和域解析符「::」。如: student::getnum(); 當然也可以通過物件名呼叫靜態成員函式,如: stu.getnum();

靜態成員和靜態成員函式

靜態成員和靜態成員函式 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。靜態成員物件不需要通過物件就能訪問 class crectangle crectangle crectangle int i,int j crectangle crectangle int crect...

靜態成員和靜態成員函式

靜態成員函式的特點 1.static資料成員在類內的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候驚醒初始化 2.static資料成員只能在課的外部進行初始化 特例 當整形const static資料成員被常量表示式初始化,就可以在類內進行初始化,但還需要在外部進行定...

靜態成員變數 和 靜態成員函式

資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...