一:靜態資料成員:
類體中的資料成員的宣告前加上static關鍵字,該資料成員就成為了該類的靜態資料成員。和其他資料成員一樣,靜態資料成員也遵守public/protected/private訪問規則。同時,靜態資料成員還具有以下特點:
1、靜態資料成員的定義。
靜態資料成員實際是類域中的全域性變數,其定義方式與全域性變數相同。
例如:
classbase
;const
intbase::x=10; //
初始化時不受private和protected訪問限制
注意:不要試圖在標頭檔案中定義(初始化)靜態資料成員。
2、靜態資料成員被類的所有物件所共享,包括該類派生類物件。即派生類與基類共享基類的靜態資料成員。這樣的好處在於避免了基類和派生類重複定義相同的物件,節省記憶體空間。
例如:
classbase
;int
base::x=0
;class derived:public
base
;int
main()
///結果為1,2;可見基類和派生類公用乙個靜態資料成員。
3、靜態資料成員可以成為成員函式的可選引數,而普通資料成員則不可以。
例如:
classbase
;
4、靜態資料成員的型別可以是所屬類的型別,而普通資料成員則不可以。普通資料成員只能宣告為所屬類型別的指標或引用。
classbase
;
5、靜態資料成員的值在const成員函式中可以被合法的改變。
例如:
classbase
static
intx;
mutable
inty;
intz;
void test()const
};int
base::x=0;
二、靜態成員函式。
1、靜態成員函式的位址可用普通函式指標儲存,而普通成員函式位址需要用類成員函式指標來儲存。
2、靜態成員函式不可以呼叫類的非靜態成員函式,因為靜態成員函式不含this指標。
3、靜態成員函式不可以同時宣告為virtual、const、volatile函式。
例如:
classbase
;
4、靜態成員與靜態成員函式是可以獨立訪問的,也就是說,無需任何物件例項就可以訪問。
靜態成員和靜態成員函式
靜態成員和靜態成員函式 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。靜態成員物件不需要通過物件就能訪問 class crectangle crectangle crectangle int i,int j crectangle crectangle int crect...
靜態成員和靜態成員函式
靜態成員函式的特點 1.static資料成員在類內的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候驚醒初始化 2.static資料成員只能在課的外部進行初始化 特例 當整形const static資料成員被常量表示式初始化,就可以在類內進行初始化,但還需要在外部進行定...
C 靜態成員函式和靜態資料成員
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...