C 靜態成員和靜態成員函式

2022-05-02 21:36:07 字數 1263 閱讀 6287

一:靜態資料成員:

類體中的資料成員的宣告前加上static關鍵字,該資料成員就成為了該類的靜態資料成員。和其他資料成員一樣,靜態資料成員也遵守public/protected/private訪問規則。同時,靜態資料成員還具有以下特點:

1、靜態資料成員的定義。

靜態資料成員實際是類域中的全域性變數,其定義方式與全域性變數相同。

例如:

class

base

;const

intbase::x=10; //

初始化時不受private和protected訪問限制

注意:不要試圖在標頭檔案中定義(初始化)靜態資料成員。

2、靜態資料成員被類的所有物件所共享,包括該類派生類物件。即派生類與基類共享基類的靜態資料成員。這樣的好處在於避免了基類和派生類重複定義相同的物件,節省記憶體空間。

例如:

class

base

;int

base::x=0

;class derived:public

base

;int

main()

///結果為1,2;可見基類和派生類公用乙個靜態資料成員。

3、靜態資料成員可以成為成員函式的可選引數,而普通資料成員則不可以。

例如:

class

base

;

4、靜態資料成員的型別可以是所屬類的型別,而普通資料成員則不可以。普通資料成員只能宣告為所屬類型別的指標或引用。

class

base

;

5、靜態資料成員的值在const成員函式中可以被合法的改變。

例如:

class

base

static

intx;

mutable

inty;

intz;

void test()const

};int

base::x=0;

二、靜態成員函式。

1、靜態成員函式的位址可用普通函式指標儲存,而普通成員函式位址需要用類成員函式指標來儲存。

2、靜態成員函式不可以呼叫類的非靜態成員函式,因為靜態成員函式不含this指標。

3、靜態成員函式不可以同時宣告為virtual、const、volatile函式。

例如:

class

base

;

4、靜態成員與靜態成員函式是可以獨立訪問的,也就是說,無需任何物件例項就可以訪問。

靜態成員和靜態成員函式

靜態成員和靜態成員函式 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。靜態成員物件不需要通過物件就能訪問 class crectangle crectangle crectangle int i,int j crectangle crectangle int crect...

靜態成員和靜態成員函式

靜態成員函式的特點 1.static資料成員在類內的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候驚醒初始化 2.static資料成員只能在課的外部進行初始化 特例 當整形const static資料成員被常量表示式初始化,就可以在類內進行初始化,但還需要在外部進行定...

C 靜態成員函式和靜態資料成員

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...