1. 程式人生 > >靜態成員和靜態成員函式的總結

靜態成員和靜態成員函式的總結

一、靜態成員的特點:

(1)static資料成員在類的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候進行初始化;

(2)static資料成員只能在類的外部進行初始化(特例:當整型const static資料成員被常量表達式初始化時,就可以在類的內部進行初始化,但還需要在外部進行定義)。

(3) static資料成員可以是該成員所屬的類型別,而非static資料成員只能自身類的引用或者指標。

(4)static資料成員可以用作類成員函式的預設實參。

(5)static資料成員的值可以改變。

二、靜態成員和非靜態成員的區別:

(1) 靜態變數使用 static 修飾符進行宣告,在類被例項化時建立,通過類和物件都可以進行訪問;

(2)不帶有 static 修飾符宣告的變數稱做非靜態變數,在物件被例項化時建立,通過物件訪問;

(3) 一個類的所有例項的同一靜態變數都是同一個值,同一個類的不同例項的同一非靜態變數可以是不同的值。

(4) 靜態函式的實現裡不能使用非靜態成員,如非靜態變數、非靜態函式等。

三、靜態成員函式的特點:

(1) static 成員函式沒有 this 形參,它可以訪問所屬類的 static 成員,但不能訪問非 static 成員。

(2)static成員函式既可以在類的內部定義,也可以在類的外部定義,在外部定義時,不能重複指定static保留字。

(3)static成員函式不能宣告為虛擬函式,不能實現動態繫結

(4)static 成員函式不能宣告為const,因為const是針對this是不是const而言的

(5)建構函式、解構函式不能為靜態函式。