const的用途
const修飾的資料類型是指常類型,常類型的變量或對象的值是不能被更新的。
const關鍵字的作用主要有以下幾點:
(1)可以定義常量,具有不可變性。例如:const int i=100,int Array[i];
(2)可以定義函數形參,便于進行類型檢查,使編譯器對處理内容有更多了解,消除了一些隐患。例如: void f(const int i) { ………} 編譯器就會知道i是一個常量,不允許修改;
(3)可以避免意義模糊的數字出現,同樣可以很友善地進行參數的調整和修改。
(4)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。 還是上面的例子,如果在函數體内修改了i,編譯器就會報錯; 例如:
void f(const int i) { i=10;//error! }
(5) 為函數重載提供了一個參考。
class A { ……
void f(int i) {……} //一個函數
void f(int i) const {……} //上一個函數的重載 ……
};
(6) 可以節省空間,避免不必要的記憶體配置設定。 例如:
#define PI=3.14159//常量宏
const doulbe Pi=3.14159; //此時并未将Pi放入ROM中 ……
double i=Pi; //此時為Pi配置設定記憶體,以後不再配置設定!
double I=PI; //編譯期間進行宏替換,配置設定記憶體
double j=Pi; //沒有記憶體配置設定
double J=PI; //再進行宏替換,又一次配置設定記憶體!
const定義常量從彙編的角度來看,隻是給出了對應的記憶體位址,而不是象#define一樣給出的是立即數,是以,const定義的常量在程式運作過程中隻有一份拷貝,而#define定義的常量在記憶體中有若幹個拷貝。
(7) 提高了效率。 編譯器通常不為普通const常量配置設定存儲空間,而是将它們儲存在符号表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀記憶體的操作,使得它的效率也很高。