const定義的變量可以改變嗎?
不是的,在對象生存期內是不可以改變的,過了生存期就是普通變量了。
在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
下一篇po什么意思