被const修飾的變數是不能改變的
const修飾變數時,必須在宣告變數的同時給出初始化(類中的const成員變數不一樣)
定義為變數本身是乙個常量,因此對一切的內建型別常量而言,所有的const都是頂層const
對指標來說,常量指標是頂層const,對於引用則沒有頂層const的概念。
只在指標和引用上有效,其定義是該指標指向或該引用繫結的物件是常量。
因此:頂層const和底層const,引用只有底層const。
int main()
就不能對此方法生命週期外的變數值修改,可以保護成員變數不被方法修改
class example
private:
int m_data;
};
保證在外部呼叫該方法後,返回值不會被篡改
class example
private:
int m_data;
};int main(int argc, char* ar**)
mutable 是為了突破 const 的限制而設定的。可以用來修飾乙個類的成員變數。被 mutable 修飾的變數,將永遠處於可變的狀態,即使是 const 函式中也可以改變這個變數的值。
class example
private:
int m_data;
mutable bool m_isdone;
};
類的const物件只能呼叫類的const成員函式,類的非const物件可以呼叫const成員函式和非const成員函式
class example
private:
int m_data;
};int main(int argc, char* ar**)
不能在類宣告中初始化const資料成員,因為類的物件未被建立時,編譯器不知道const成員的值是什麼。const資料成員的初始化只能在類建構函式的初始化表中進行!
class example
//const成員的初始化只能在類建構函式的初始化表中進行
private:
const int m_data; //const成員
};int main(int argc, char* ar**)
想要在類中建立恆定的常量,應該用類中的列舉常量來實現。
class example
private:
enum ; //列舉常量成員
int m_data;
};int main(int argc, char* ar**)
列舉常量不會占用物件的儲存空間,它們在編譯時被全部求值。列舉常量的缺點是:它的隱含資料型別是整數,其最大值有限,且不能表示浮點數。 const關鍵字總結
這裡會呼叫string類的預設建構函式初始化陣列元素。const int cur 這裡的cur是乙個指向int型別的const物件的指標,const先頂了cur指向的物件的型別,而並非cur本身,所以cur不是const的 const double cur const double pur 1.2 ...
const關鍵字總結
const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。雖然這聽起來很簡單,但實際上,const的使用也是c語言中乙個比較微妙的地方,微妙在何處呢?請看下面幾個問題...
const關鍵字(摘抄 總結)
4.3.4 const關鍵字與指標 4.3.4.1 const修飾指標的4種形式 1 const關鍵字,在c語言用來修飾變數,表示這個變數是常量 2 const修飾指標有4種形式,區分清楚這4種即可全部理解const和指標 第一種 const int p p本身不是const的,而p指向的變數是co...