靜態成員實質上是為了解決資料共享的問題,因為使用全域性變數會帶來不安全性。
(1)通過物件名能夠訪問public成員變數
(2)每個物件的成員變數都是專屬的
(3)成員變數不能夠在物件之間共享
注意:成員變數是每個物件所專屬的成員,而成員函式是多個物件所共用的,當有多個物件時,是通過this指標來去實現確定當前物件的。
當我們想要實現多有物件都共享乙個成員變數時,那麼該如何實現呢,就是通過給成員變數加上靜態屬性,即宣告為靜態成員變數。
步驟一:在private中給成員變數加上static關鍵字
步驟二:在類之外進行宣告和初始化
(1)靜態成員變數屬於整個類所有
(2)靜態成員變數的生命期不依賴於任何物件
(3)可以通過類名直接訪問公有靜態成員變數
(4)所有物件共享類的靜態成員變數
(5)可以通過物件名訪問公有靜態成員變數
(6)靜態成員變數需要在類外單獨分配空間,因為它不專屬於某個物件,因此不占用物件的空間
(7)靜態成員變數在程式內部位於全域性資料區,也就是說他和全域性變數,區域性靜態變數是位於同乙個區域的。
需求如下:
實現**1:
其實上面是還未完整地完成需求的,因為上面這個函式不能隨時檢視當前有多少個物件,那麼我們是否能夠實現不需要物件來查詢當前有多少物件呢?答案是可以的,我們可以通過定義靜態成員函式來實現,有了靜態成員函式,就可以直接通過類名來去呼叫函式。
(1)、靜態成員函式只能夠訪問靜態成員函式或者靜態成員變數。
(2)、靜態成員函式不能夠呼叫非靜態成員函式或者是訪問非靜態成員變數。
實現**2:
類靜態成員和類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...