c 在類中定義常量的幾個做法

2021-09-06 01:21:48 字數 667 閱讀 2432

用下面的乙個問題來說明。

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

方法一:(錯誤)

class test ;

錯誤原因:

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

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

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

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

使用enum;

class test ;

int array[size];

//……

};

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

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

方法三:(正確,最好)

使用靜態常量;

class test ;

const int test::size = 100;

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

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

在類中定義常量的方法

問題 在類中建立乙個int型別的陣列 方法一 錯誤 class test 錯誤原因 1 因為在乙個類中,const恢復了它在c中的一部分意思,在每個類物件裡分配儲存並代表乙個值,這個值一旦被初始化以後就不能被改變。所以在類中使用了const的意思是 在這個物件的生命週期內,它是乙個常量。然而,每個物...

C 類中定義常量

在c 類中定義常量,有以下兩種方法 1.在類定義體內定義列舉常量 例如 class a 這樣定義出來的常量值在程式執行過程中是不能被修改的,編譯的時候就已經確定了這些常量的值 2.在類定義體中宣告使用static const來修飾成員常量,然後在類定義體外對這些成員進行初始化 也就是說在類定義體內定...

類中定義常量

const int 和const 浮點型可以在類中定義,既然已經定義過了,編譯器就會為它分配記憶體。那麼類外的const int a i 就不會被視為定義而被編譯器認為是乙個重複申明,所以就不必要了。而普通型別,如static char p在類中的只是申明,編譯器不會為它分配記憶體,所以要在類外執行...