不是的,在物件生存期內是不可以改變的,過了生存期就是普通變量了。在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
不是的,在物件生存期內是不可以改變的,過了生存期就是普通變量了。在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