const關鍵字的用法

2021-04-06 20:36:50 字數 1572 閱讀 6943

const關鍵字主要是阻止對變數或者引數的改變。對const關鍵字主要有四種用法:

(1)const變數

可以將const應用於乙個簡單的變數。一旦變數被使用const定義後,編譯器將拒絕所有的為這個變數賦值的語句。給這個變數賦值的唯一方法就是通過初始化來完成。

const int i = 123;

i = 1000;            //error!

也可以將陣列和類這樣的符合型別宣告為const的。這時物件中的所有成員(元素)都將被保護而不被改變。

(2)const指標

const指標的規則是const變數在邏輯上的乙個擴充套件。

可以將乙個指標宣告為const型別。const int *p,也就是說p指向乙個不能被改變的整數型。儘管p本身可以改變,但*p是不能被改變的。

const int *p;

(const) int i=20,k=40;

p=&i;

*p=100;   //error!

p=&k;     //允許指標變數指向另外乙個同一型別的別的變數

c++中關於指標和const型資料相互作用的規則是:

乙個const型的指標既可以指向const型的資料也可以指向非const型的資料;

乙個普通的指標不能指向const型的資料。

const int i =123;

int *p = &i;  //error!this is noe allowed.

也可以在乙個指標宣告的內部使用const關鍵字:

char s="amirural";

char * const p = s;  //s必須被初始化

p="rural";   //error,指標值不可修改

*p = 's';    //可借助p對所指變數重新賦值

(3)const引數型別 (const最重要的用法)

通常由引用來傳遞資料時,要防止對資料的改變。可以宣告乙個const型的指標引數來完成這項工作。函式得到指向資料的指標,但它不允許使用這個指標來改變資料的值。

例如,在函式定義的內部,*str、*pb、*pd的值是可讀的,但下面試圖向它們所指向的資料分配值的語句將會作為錯誤被標記出來;

void func(const char str,const int *pb,const int pd);

...*str = 's';   //error

str[2] = 'f'; //error,即使涉及到的是該指標所指位址的偏移量

*pb = 2;      //error

*pd = 4;      //error

(4)const型的成員函式和物件

這一點主要用在拷貝建構函式中。拷貝建構函式最後將要做的事情是改變它的引數,而用引用來傳遞引數的目的是為了提高效率,人們願意使用引用來傳遞引數,但是要阻止拷貝建構函式改變引數的能力。於是,c++提供了這一技術,如果你使用const關鍵字宣告了乙個物件,那你就只可以呼叫這個物件的const型的成員函式。這樣的函式不會改變成員變數。同時,除了使用建構函式外,你不能改變乙個const型物件的任何成員變數。

通過將const關鍵字放在函式宣告之後和函式定義之前,你就可以將乙個成員函式宣告為const型的。

const關鍵字用法

1 const常量 如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2 const修飾類的資料成員 class a const...

const關鍵字用法

const修飾符表示該變數的值不能被改變。但得分兩種情況討論 修飾普通變數和修飾指標變數。1.普通常量 const int foo 5 表示foo不能再被賦值 foo 8 錯誤,因為foo是const修飾為不可變常量了 2.修飾指標 const char p test 表示p指向 的記憶體不可改變,...

const關鍵字的用法

一 概述 被const修飾的變數都是唯讀的,當你的程式改變其值的時候,編譯器會報錯。const一般用來修飾變數,函式的引數,返回值和函式本身等。1.1 修飾變數 const int a 10 定義乙個const的int變數 const char p hello world const字串 char ...