在類中定義常量的方法

問題:在類中建立一個int類型的數組


方法一:(錯誤)

class Test

{

  const int size = 100;

  int array[size];

//……

};

 

錯誤原因:

1:因爲在一個類中,const恢復了它在c中的一部分意思,在每個類對象裏分配存儲並代表一個值,這個值一旦被初始化以後就不能被改變。所以在類中使用了const的意思是:在這個對象的生命週期內,它是一個常量。

然而,每個對象可能包含不同的值。

2:對const常量進行了初始化,C++中這個初始化必須由構造函數完成,如const常量在初始化列表中進行初始化。


方法二:(正確,有缺陷)

使用enum;

class Test

{

  enum { size = 100};

  int array[size];

//……

};

 

使用enum不會佔用對象中的存儲空間的,枚舉常量在編譯的時候被全部求值。

缺點:

假如定義一個非整型的常量該如何?enum無法完成此項操作,同時喪失了枚舉本來的作用。

 

方法三:(正確,最好)

使用靜態常量;

class Test

{

  static const int size;

  int array[size];

//……

};

const int Test::size = 100;

 

它既是常量,不能改變,又是靜態,在類中只有一個定義點。所以能夠完成任務。

同時,它可以定義任何與定義類型的常量

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