在類中定義不變的常量是否可以用const?

2021-04-17 01:51:33 字數 798 閱讀 6662

看了林博士的書才知道這麼一會事。

有時我們希望某些常量只在類中有效。由於#define 定義的巨集常量是全域性的,不能

到目的,於是想當然地覺得應該用 const 修飾資料成員來實現。const 資料成員的確

存在的,但其含義卻不是我們所期望的。const 資料成員只在某個物件生存期內是常量

,而對於整個類而言卻是可變的,因為類可以建立多個物件,不同的物件其 const 數

成員的值可以不同。

不能在類宣告中初始化 const 資料成員。以下用法是錯誤的,因為類的物件未被創

時,編譯器不知道 size 的值是什麼。

class a

; const 資料成員的初始化只能在類建構函式的初始化表中進行,例如

class a

; a::a(int size) : size(size)  // 建構函式的初始化表

a  a(100); // 物件 a 的 size 值為 100

a  b(200); // 物件 b 的 size 值為 200

怎樣才能建立在整個類中都恆定的常量呢?別指望 const 資料成員了,應該用類中

列舉常量來實現。例如

class a

; // 列舉常量

int array1[size1]; 

int array2[size2];

}; 列舉常量不會占用物件的儲存空間,它們在編譯時被全部求值。列舉常量的缺點是:

它的隱含資料型別是整數,其最大值有限,且不能表示浮點數(如 pi=3.14159)。

在類中定義常量的方法

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

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

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

答疑 單純資訊展示的站點是否可以用UML建模

單純資訊展示的站點是否可以用uml建模 凌欽亮 view profile translate to english more options aug 7 2010,10 36 am 現在社會上大量的 需求都還只是用於單純的企業資訊展示,那此種 是否有必要用uml 建模呢?業務用例圖的乙個個用例是用來...