const在C++中很常用,在編程中也建議多使用const去告訴編譯器和其他程序員某個值應該保持不變。
const可以用在很多地方:
(1)用在classes外部修飾global或namespace作用域中的常量
(2)修飾文件、函數、或區塊作用域中被聲明為static的對象
(3)修飾classes內部的static和non-static成員變量
(4)面向指針,也可以指出指針自身、指針所指物,或兩者都是const,如:
1 char greeting[] = "Hello"; 2 char * p = greeting; 3 const char * p = greeting; 4 char * const p = greeting; 5 const char * const p = greeting;
雖然const的語法變化多端,但是很容易理解:
(1)const出現在星號左邊,表示被指物是常量
(2)const出現在星號右邊,表示指針自身是常量
(3)const出現在星號的兩邊,表示被指物和指針都是常量
注意:如果被指物是常量,將關鍵字const寫在類型之前和寫在類型之後、星號之前,意義是相同的。如:
1 void f1(const Widget * pw ); //f1獲得一個指針,指向一個常量Widget對象 2 void f2( Widget const * pw ); //f2也是
const最具威力的用法是面對函數聲明時的應用。在一個函數聲明式內,const可以和函數返回值、各參數、函數自身產生關聯,他們也是有一定好處的:
(1)令函數返回一個常量值,往往可以降低因客戶錯誤而造成的意外,而又不至於放棄安全性和高效性。
(2)const實施於成員函數。目的是為了確認該成員函數可作用於const對象身上。這類成員函數很重要,因為:
a. 它們使class接口比較容易理解。因為得知哪個函數可以改動對象而哪個函數不行,很重要。
b.它們使”操作const對象“成為可能。