const成員變量


#include <iostream>
using namespace std;

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

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

說明

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

但是

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

 答案是利用枚舉,舉例

#include <iostream>
using namespace std;

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

int main()
{
    A a;
}

枚舉常量不會占據對象的存儲空間,在編譯時被全部求值

但是,它隱含的數據對象類型為整形,不能表示其他類型。

問題

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

 

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

  1. 類的const常量
  2. 類的引用類型成員
  3. 沒有默認構造函數的類類型成員
  4. 如果類存在繼承關系,派生類必須在其初始化列表中調用基類的構造函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM