類中定義常量

2021-05-23 21:23:48 字數 997 閱讀 5645

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

而普通型別,如static   char*   p在類中的只是申明,編譯器不會為它分配記憶體,所以要在類外執行乙個定義,為p分配記憶體。

如: class   a

char*   a::p;     //定義,為p分配記憶體,否則後面程式有呼叫p則顯示unresolved   symbol   p

c++標準中仍然是只有integer型別的資料可以在類內初始化(注意是初始化,不是定義 ),並且還是必須在類外定義。

而上面幾位說的都是對的,那些只是編譯的擴充套件,而不是標準了。

方法一:(錯誤)

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;

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

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

C 類中定義常量

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

常量類定義

在專案中經常用到的常量類的定義方法 有 inte ce emun class 等 下面說一下 常量類的定義方法 final 修飾類名 不可繼承 定義了乙個私有的建構函式,避免例項化該類 public static fianl 修飾變數 public final class returncode pu...

如何在類中定義常量?

如果你想得到乙個可用於常量表示式中的常量,例如陣列大小的定義,那麼你有兩種選擇 那麼,為何要有這些不方便的限制?因為類通常宣告在標頭檔案中,而標頭檔案往往被許多單 元所包含。但是,為了避免鏈結器設計的複雜化,c 要求每個物件都只能被定義一次。如果c 允許類內定義要作為物件被存在記憶體中的實體,那麼這...