const成員變量

#include <iostream>
using namespace std;

class A
{
    public:
        A(int size) : SIZE(size) {};
    private:
        const int SIZE;
};

int main()
{
    A a(100);
}

說明ios

  • 在類中聲明變量爲const類型,可是不能夠初始化
  • const常量的初始化必須在構造函數初始化列表中初始化,而不能夠在構造函數函數體內初始化

可是函數

 此時的const變量屬於具體的一個對象,如何在整個類中都恆定不變呢?spa

 答案是利用枚舉,舉例code

#include <iostream>
using namespace std;

class A
{
    private:
        enum {SIZE = 100};
    public:
        int array[SIZE];
};

int main()
{
    A a;
}

枚舉常量不會佔據對象的存儲空間,在編譯時被所有求值對象

可是,它隱含的數據對象類型爲整形,不能表示其餘類型。blog

問題繼承

如何定義在類中定義非整形常量?(待解決)io

 

話說有幾個地方必須在構造函數的初始化列表中編譯

  1. 類的const常量
  2. 類的引用類型成員
  3. 沒有默認構造函數的類類型成員
  4. 若是類存在繼承關係,派生類必須在其初始化列表中調用基類的構造函數
相關文章
相關標籤/搜索