C 系列之const的使用

2022-08-18 00:33:13 字數 2095 閱讀 1694

c++中關鍵字const的使用非常靈活,如果能夠恰當的使用const,可以在一定程度上提高程式的安全性和可靠性。

關鍵字const的使用:

1.定義常量

如:

1

const

int pi = 3.1415926;

const常量有資料型別,編譯器在編譯時會進行型別安全檢查。而巨集常量沒有資料型別,只進行字元的替換,沒有型別安全檢查,在字元替換時有可能會產生錯誤(邊際效應)。

2.修飾指標

如:

1

const

int *p = &a;

宣告p為乙個指向常量a的指標,p指向的物件不能修改,但他可以指向任何位址的常量。 

1

intconst *p = &a;

宣告p為乙個指向常量a的指標,p指向的物件不能修改,但他可以指向任何位址的常量。

1

int * const p = &a;

宣告p為乙個常量指標,它指向a,p這個指標指向的物件不能修改,但他指向的位址的內容可以修改。

1

const

int * const p = &a;

宣告p是乙個指向常量的常量型指標。

注意:如果const位於*的左側,則const就是用來修飾指標所指向的變數,即指標指向 為常量;如果const位於*的右側,const就是修飾指標本身,即指標本身為常量。

3.修飾函式

3.1 修飾函式的引數

如:

1

void func(const a &a);

形參為const a &a,則不能對傳遞進來的引用物件進行改變,保護了原物件的屬性。

1

void func(const a *a);

形參為const a *a,則不能對傳遞進來的指標的內容進行改變,保護了原指標所指向的內容。

注意:const修飾引數通常用於引數為指標或引用的情況,且只能修飾輸入引數;若輸入引數採用「值傳遞」方式,由於函式將自動產生臨時變數用於複製該引數,該引數就不需要保護,所以不用const修飾。

3.2 修飾函式的返回值

如:

1

const a *func();

函式返回的指標指向的物件是乙個const物件,它必須賦給乙個同樣是指向const物件的指標。

1

const a * const func();

比之前多了乙個const,這個const只是在它被用作左值時有效,這個指標除了指向const物件以外,它本身也不能修改,所以就不能當作左值來處理。

注意:一般情況下,函式的返回值為某個物件時,如果將其宣告為const時,多用於操作符的過載。通常,不建議使用const修飾函式的返回值型別為某個物件或者對某個物件的引用的情況。如果給採用「指標傳遞」方式的函式返回值加const修飾,那麼函式返回值(即指標)的內容不能被修改,該返回值只能被附給加const修飾的通型別指標。

4.修飾類

4.1 修飾類的資料成員

如:

1

classa2

;

const資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的。因為類可以建立多個物件,不同的物件其const資料成員的值可以不同。所以不能在類宣告中初始化const資料成員,因為類的物件未被建立時,編譯器不知道const資料成員的值是什麼。const資料成員的初始化只能在類的建構函式的初始化表中進行。要想建立整個類中都恆定的常量,應該用類中的列舉常量來實現。

如:

1

classa2

;4......

5 };

列舉常量不會占用物件的儲存空間,他們在編譯時被全部求值。但是列舉常量的隱含資料型別是整數,其最大值有限,且不能表示浮點數。

4.2 修飾類的成員函式

如:

1

void func() const;

任何不會修改資料成員的函式都因該宣告為const型別。如果在編寫const成員函式時,修改了資料成員,或者呼叫了其他非const成員函式,編譯器將會報錯。

注意:類的建構函式和析構函式都不能是const函式。

C 之const的使用

const是常量意思 常量是不可以被改變的 const int a 1 intconst a 1 所表示的都是啊a 1 且a不可以被改變 const可以修飾指標 p是指標所指的數值 p是指標的位址 所以 如果const位於 的左側,即指標指向為常量 const p 如果const位於 的右側,即指標...

C 入坑系列 六 之const和指標

在實際的開發過程中,您是否聽過指標常量和常量指標?又是否知道它們之間的區別呢?雖然兩者的名稱是非常相似的,但是兩者的工作原理卻有著很大的區別。本文目的便是希望能夠讓大家理解起來更加容易,如有不足和疏漏之處,還望各位讀者不吝指正,謝謝!指標本身是乙個常量,即指標的指向是不能更改的,但是可以通過指標修改...

C中CONST的使用

基本解釋 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。雖然這聽起來很簡單,但實際上,const的使用也是c語言中乙個比較微妙的地方,微妙在何處呢?請看下...