回覆列表
  • 1 # 使用者219515082544

    不是的,在物件生存期內是不可以改變的,過了生存期就是普通變量了。

    在C++中,const成員變數也不能在類定義處初始化,只能透過建構函式初始化列表進行,並且必須有建構函式。

      const資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的。因為類可以建立多個物件,不同的物件其const資料成員的值可以不同。所以不能在類的宣告中初始化const資料成員,因為類的物件沒被建立時,編譯器不知道const資料成員的值是什麼。

      const資料成員的初始化只能在類的建構函式的初始化列表中進行。要想建立在整個類中都恆定的常量,應該用類中的列舉常量來實現,或者static cosnt。

      

    class Test

    {

    public:

    Test():a(0){}

    enum {size1=100,size2=200};

    private:

    const int a;//只能在建構函式初始化列表中初始化

    static int b;//在類的實現檔案中定義並初始化

    const static int c;//與 static const int c;相同。

    };

    int Test::b=0;//static成員變數不能在建構函式初始化列表中初始化,因為它不屬於某個物件。

    cosnt int Test::c=0;//注意:給靜態成員變數賦值時,不需要加static修飾符。但要加cosnt

  • 中秋節和大豐收的關聯?
  • 除夕夜,馬雲到你家吃年夜飯,你會是什麼心情?