類中的靜態成員
1. 在類中的靜態數據,屬於類共享,不屬於對象獨有
2. 即使沒有定義對象,靜態成員也是存在的
3. 靜態數據成員在類中說明,在類外定義 並且會給他分配內存空間,並初始化(一經定義則必須初始化)
4. 可以通過對象去訪問靜態成員,但是這里容易讓人產生誤解,以為他們是成員變量(靜態成員是被所有對象共享的
所以也可以去修改它) 我們一般通過 類名::靜態成員 去訪問它們
5. 他的生存周期一直存在於整個程序的生命周期
靜態成員的定義
int Class : : a=10;
數據類型+類名+作用域符號+變量名=10;
靜態成員函數
1. 靜態成員函數屬於一個類,而不屬於類中的任何對象
2. 靜態成員函數的說明和定義與靜態數據成員一樣,函數可以實現在類體內,也可以實現在類體外
3.
靜態成員函數在實現中,可以直接使用靜態成員,也可以通過對象來使用非靜態成員!!
這里說明,靜態成員函數不能是虛函數,不能直接訪問非靜態成員,因為他是類所有,而不是對象所有
虛函數和靜態成員是對象創建的時候才會有的,這里靜態成員函數不屬於對象,那么也就不能定義為虛函數,更不能使用成員變量
C語言的static和C++static總結:
static在C中的用法,對於C++來說是全盤接受的 兩者的不同就在於C++中的類使用
C中的static變量其影響不在於作用域,在於其存儲方式
C中的static函數,即內部函數,它其實是將訪問權限限值在文件內部,文件外部無法訪問
也是一種隱藏機制(類似當成private) 如果要訪問需要加上extern 而extern是默認的
C語言中局部靜態變量 作用域是函數體內,生存周期是整個程序運行期間