1. 程式人生 > >C++中的const的使用

C++中的const的使用

 

 

const 意為常數,總的來說就是被const修飾過的數無法進行修改。

 

好處:

1、保護資料,增強程式碼的健壯性。 

2、便於進行型別檢查。     const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。

3、可以節省空間,避免不必要的記憶體分配。

4、提高了效率。       編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。

 

 

 

用法:

1、const用於將某個變數變為常值,使其在接下來的程式中無法再次被更新,否則編譯器將報錯。

ps:如果要對該變數進行操作,只能在初始化時對其進行操作。

 

int f(const int a)//a在該函式中將無法進行修改。
{
	...; 
} 

int main()
{
	const int a;.//a在程式中將不能修改 。 
}
const int *p;//該處p指標的值也無法進行更新。

 

 

2、用於在類中宣告該函式是是上個函式的過載。

 

class P
{
	public:
		int a;
		void f();
		void f() const;//此處宣告f函式過載 
} 


3、常引用。格式為

 

     const     型別識別符號  &  引用名;

    常引用所引用的物件不會被更新,並且如果被引用量是常量那麼只能通過常引用引用。

 

void f(const int &a,const int &b)//a,b所被引用的值在該函式中無法被更新。 

 

 

 

 

 

ps:

const 轉換為非 const的方法:

採用const_cast 進行轉換。  

 

用法:const_cast <type_id>  (expression) 
該運算子用來修改型別的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的型別是一樣的。

常量指標被轉化成非常量指標,並且仍然指向原來的物件;

常量引用被轉換成非常量引用,並且仍然指向原來的物件;

常量物件被轉換成非常量物件。

編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高