在一個類中還可以定義靜態成員,但靜態成員是所有對象公有的。靜態成員分為靜態數據成員和靜態 成員函數。
1.靜態數據成員
在類中定義靜態數據成員的方法就是在該成員的前面加上關鍵字static.
定義靜態數據成員的語句格式如下:
class 類名
{
……
static 類型說明符 成員名;
……
};
靜態數據成員是類的所有對象共享的成員。靜態數據成員所占的空間不會隨著對象的產生而分配,也 不會隨著對象的消失而回收。對靜態數據成員的操作和類中一般數據成員的操作是不一樣的,定義為私有 的靜態數據成員不能被外界所訪問。靜態數據成員可由任意訪問權限許可的函數所訪問。
由於靜態數據成員是類的所有對象共享的,而不從屬於任何一個具體對象,所以必須對類的靜態數據 成員進行初始化,但對它的初始化不能在類的構造函數中進行,其初始化語句應當寫在程序的全局區域中 ,並且必須指明其數據類型與所屬的類名,其初始化格式如下:
類型 類名::變量名=值;
對於在類的public部分說明的靜態數據成員,在類的外部可以不使用成員函數而直接訪問,但在使用 時必須用類名指明所屬的類,其訪問格式為:
類名::靜態數據成員名
對於在類的非public部分說明的靜態數據成員,則只能由類的成員函數訪問,其訪問方法與訪問類中 普通數據成員的訪問方法完全一樣,但在類的外部不能訪問。
2.靜態成員函數
靜態成員函數的定義與一般成員函數的定義相同,只是在其前面冠以static關鍵字,其定義格式如下 :
class 類名
{
…
static 類型 函數名(形參)
{ 函數體 }
…
};
說明:
(1)類的靜態成員函數只能訪問類的靜態數據成員,而不能訪問類中的普通函數成員(非靜態數據成 員),因為普通數據成員只有類的對象存在時才有意義。
(2)靜態成員函數與類相聯系,而不與類的對象相聯系,所以,在類的外部調用類中的公有靜態成員 函數,必須在其左面加上“類名::”,而不是通過對象名調用公有靜態成員函數。在類的外 部不能調用類中的私有靜態成員函數。
相關文章
C++學習摘要之二:構造函數和析構函數
http://www.bianceng.cn/Programming/cplus/200911/12302.htm
C++學習摘要之一:類和對象
http://www.bianceng.cn/Programming/cplus/200911/12301.htm