看了林博士的書才知道這麼一會事。
有時我們希望某些常量只在類中有效。由於#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 建模呢?業務用例圖的乙個個用例是用來...