類的static成員函數和const成員函數

static成員的特性 

  static成員函數沒有this指針。

  static成員函數不能被聲明爲const。

  static成員函數也不能被聲明爲虛函數。

  static成員函數可以直接訪問所屬類的static成員,但不能直接使用非static成員。

  static數據成員的類型,可以是該成員所屬的類類型。非static成員被限定聲明爲其自身類對象的指針或引用。 

  static數據成員可以作爲成員函數的默認實參。非static數據成員,不能用作成員函數的默認實參,因爲它的值不能獨立於所屬對象而使用。分析:靜態成員函數如果未初始化,系統自動會給它初始化爲某個缺省值(如int初始化爲0, 指針初始化爲NULL等)。 所以一旦定義,其值已確定,可以作爲類成員函數的缺省參數。

   當在類的外部定義static成員時,無須重複指定static關鍵字。static關鍵字只能用於類定義體內部的聲明中,定義不能標示爲static。

 

  static數據成員必須在類定義體的外部定義正好一次。不像普通的數據成員,static成員不是通過類構造函數進行初始化,而是應該在定義時初始化。一般將static數據成員的定義放在包含類的非內聯成員函數定義的文件中。 

  一般的講,static數據成員和普通數據成員一樣,不能在類的定義體中初始化。static數據成員一般在定義時候初始化。這個規則的一個例外是,只要初始化式是一個常量表達式,const static 數據成員就可以在類的定義體中初始化(Perimer上只寫了const static 整形,經過測試發現string也可以):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章