在任何可能的情況下都要使用 const. 此外有時改用 c++11 推出的 constexpr 更好。
定義:
在宣告的變數或引數前加上關鍵字 const 用於指明變數值不可被篡改 (如 const int foo ). 為類中的函式加上 const 限定符表明該函式不會修改類成員變數的狀態 (如 class foo ;).
優點:
編譯器可以更好地進行型別檢測, 相應地, 也能生成更好的**. 人們對編寫正確的**更加自信, 因為他們知道所呼叫的函式被限定了能或不能修改變數值. 即使是在無鎖的多執行緒程式設計中, 人們也知道什麼樣的函式是安全的.
缺點:
const 是入侵性的: 如果你向乙個函式傳入 const 變數, 函式原型宣告中也必須對應 const 引數 (否則變數需要 const_cast 型別轉換), 在呼叫庫函式時顯得尤其麻煩.
結論:
const 變數, 資料成員, 函式和引數為編譯時型別檢測增加了一層保障; 便於盡早發現錯誤. 因此, 我們強烈建議在任何可能的情況下使用 const:
然而, 也不要發了瘋似的使用 const. 像 const int * const * const x; 就有些過了, 雖然它非常精確的描述了常量 x. 關注真正有幫助意義的資訊: 前面的例子寫成 const int** x 就夠了.
關鍵字 mutable 可以使用, 但是在多執行緒中是不安全的, 使用時首先要考慮執行緒安全.
const 的位置:
這是說, 我們提倡但不強制 const 在前. 但要保持**的一致性! (yang.y 注: 也就是不要在一些地方把 const 寫在型別前面, 在其他地方又寫在後面, 確定一種寫法, 然後保持一致.)
C語言 const 用法
1 const int a int const a 這兩個寫法是等同的,表示a是乙個int常量。2 const int a int const a 表示a是乙個指標,可以任意指向int常量或者int變數,它總是把它所指向的目標當作乙個int常量。3 int const a 表示a是乙個指標常量,初始...
C 中const用法總結
c 中用法總結 1.1.1.定義普通常量 使用 define來定義常量也是常用方法,但const也可以用來定義常量,在 effective c 中建議使用const代替 define來定義常量,因為const定義的常量具有型別資訊,而巨集沒有,所以使用const定義的常量在進行賦值操作時編譯器會進行...
C 中 Const用法小結
c 中const用法小結 關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,參考了康建東兄的const使用詳解一文,對其中進行了一些補充,寫下了本文。1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編...