問題:在類中建立一個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;
它既是常量,不能改變,又是靜態,在類中只有一個定義點。所以能夠完成任務。
同時,它可以定義任何與定義類型的常量