如何實現在類中定義真正的const成員變數

2021-06-23 00:01:24 字數 859 閱讀 9007

**:

類中的const成員變數

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

不能在類宣告中初始化const資料成員。以下用法是錯誤的,因為類的物件未被建立時,編譯器不知道size的值是什麼。

class a

const int size = 100;     // 錯誤,企圖在類宣告中初始化const資料成員

int array[size];        // 錯誤,未知的size

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

class a

a(int size);     // 建構函式

const int size ;

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

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

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

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

class a

enum ; // 列舉常量

int array1[size1];

int array2[size2];

列舉常量不會占用物件的儲存空間,它們在編譯時被全部求值。列舉常量的缺點是:它的隱含資料型別是整數,其最大值有限,且不能表示浮點數(如pi=3.14159)。

如何實現在類中定義真正的const成

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

如何實現真正的IDispose?

最近在專案開發的過程中,我們的乙個資料同步程式碰到了資源無法釋放的問題。我使用的定位方法是效能計數器 perfmon.msc 顯然這只是乙個很粗礦的判斷。後通過code review我們的 中定義了乙個同步的中間類,該類中會快取大量的中間資料集。而程式中麼有及時的 這些臨時物件,最終我建議該類實現一...

Python中如何定義類?

類 class 和物件 object,也被稱為示例,instance 類是某一批物件的抽象,可以把類理解成某種概念 物件才是乙個具體的東西 定義類的語法 class類名 執行語句 零個到多個類變數 零個到多個方法 例項方法 類體中的執行語句,會在定義類時自動執行 如果類體中沒有任何 就是定義乙個空類...