C++中的靜態成員包括靜態數據成員和靜態成員函數。
靜態數據成員
一、介紹及作用
在一個類中,如果在一個數據成員前冠以關鍵字static
,那麼這種數據成員就叫做靜態數據成員。與一般的數據成員不同,無論建立多少個類的對象,都只有一份靜態數據成員的拷貝,也就是說,靜態數據成員爲該類的所有對象所共享。
C++支持靜態數據成員的一個主要原因就是可以不必使用全局變量,因爲全局變量破壞了C++封裝的特點。靜態數據成員的主要用途就是定義類的所有對象的公有數據,如平均數、總數等。
二、定義
格式如下:
static 數據類型 數據成員名稱
列如:
static int age;
這樣便定義了一個靜態數據成員。
三、初始化
格式如下:
數據類型 類名::靜態數據成員名=初始值
例如:
int Student :: age=10;
如果在初始化時,沒有對其賦初值,那麼編譯器就會自動爲其賦初值0。例如:
int Student :: age;
等價於
int Student :: age=0;
注意:靜態數據成員的初始化必須在類外且在創建對象之前進行初始化。
四、 訪問方式
(1)類名::靜態數據成員名
(2)對象名.靜態數據成員
(3)對象指針->靜態數據成員
靜態成員函數
一、介紹及作用
在普通的函數前面冠以關鍵字static
,就是靜態成員函數。靜態成員函數屬於整個類,靜態成員函數的作用就是處理靜態數據成員。
二、定義
格式如下:
static 返回類型 函數名稱(參數表)
例如:
static int fun1(int x,int y);
三、調用方式
(1)類名::靜態成員函數名
(2)對象名.靜態成員函數名
(3)對象指針->靜態成員函數名
四、附加小知識
(1)靜態成員函數與非靜態成員函數的區別:非靜態成員函數有this指針,而靜態成員函數沒有this指針。
(2)靜態成員函數可以直接訪問本類中的靜態數據成員,也可以通過對象名或對象指針或對象引用來間接訪問非靜態數據成員。
(3)靜態成員函數與靜態數據成員一起使用,達到了同一個類中不同對象之間數據共享的目的。
(4)可以在建立任何對象之前調用靜態成員函數或者訪問靜態數據成員。