C 編譯期間類中的常量

2021-05-23 12:30:00 字數 791 閱讀 9101

關於編譯期間在類中定義常量,用下面的乙個問題來說明。

問題:在類中建立乙個int型別的陣列

方法一:(錯誤)

class test

const int size = 100;

int array[size];

錯誤原因:

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

然而,每個物件可能包含不同的值。

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

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

使用enum;

class test

enum ;

int array[size];

使用enum不會占用物件中的儲存空間的,列舉常量在編譯的時候被全部求值。

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

方法三:(正確,最好)

使用靜態常量;

class test

static const int size;

int array[size];

const int test::size = 100;

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

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

類裡面的const 編譯期間的變數和常量

類裡面的const 編譯期間的變數和常量。include include using namespace std var in compile time class fred 對size的初始化在引數列表和函式體之間,保證在使用它之前為常量。fred fred int sz size sz void...

C 類中的常量

常量是一種識別符號,它的值在執行期間恆定不變。c語言用 define來定義常量 稱為巨集常量 c 語言除了 define外還可以用const來定義常量 稱為const常量 如果不使用常量,直接在程式中填寫數字或字串,將會有什麼麻煩?程式的可讀性 可理解性 變差。程式設計師自己會忘記那些數字或字串是什...

c 類中的常量

由於 define 定義的巨集常量是全域性的,不能達到目的,於是想當然地覺得應該用 const 修飾資料成員來實現。const 資料成員的確是存在的,但其含義卻不是我們所期望的。const 資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的,因為類可以建立多個物件,不同的物件其 cons...