天天看點

C++ const用法 盡可能使用const

  C++ const 允許指定一個語義限制,編譯器會強制實施這個限制,允許程式員告訴編譯器某值是保持不變的。如果在程式設計中确實有某個值保持不變,就應該明确使用const,這樣可以獲得編譯器的幫助。

1.const 修飾成員變量 

const修飾指針變量時:

  (1)隻有一個const,如果const位于*左側,表示指針所指資料是常量,不能通過解引用修改該資料;指針本身是變量,可以指向其他的記憶體單元。

  (2)隻有一個const,如果const位于*右側,表示指針本身是常量,不能指向其他記憶體位址;指針所指的資料可以通過解引用修改。

  (3)兩個const,*左右各一個,表示指針和指針所指資料都不能修改。

2.const修飾函數參數

  傳遞過來的參數在函數内不可以改變,與上面修飾變量時的性質一樣。

3.const修飾成員函數

(1)const修飾的成員函數不能修改任何的成員變量(mutable修飾的變量除外)

(2)const成員函數不能調用非onst成員函數,因為非const成員函數可以會修改成員變量

 4.const修飾函數傳回值

(1)指針傳遞

如果傳回const data,non-const pointer,傳回值也必須賦給const data,non-const pointer。因為指針指向的資料是常量不能修改。

(2)值傳遞

 如果函數傳回值采用“值傳遞方式”,由于函數會把傳回值複制到外部臨時的存儲單元中,加const 修飾沒有任何價值。是以,對于值傳遞來說,加const沒有太多意義。

是以:

  不要把函數int GetInt(void) 寫成const int GetInt(void)。

  不要把函數A GetA(void) 寫成const A GetA(void),其中A 為使用者自定義的資料類型。

  在程式設計中要盡可能多的使用const,這樣可以獲得編譯器的幫助,以便寫出健壯性的代碼。

繼續閱讀