const用法總結

2021-06-05 15:35:44 字數 2065 閱讀 9125

1.  @  const:

一、對於基本宣告

const int r=100;  

//標準const變數宣告加初始化,編譯器經過型別檢查後直接用100在

編譯時替換

。二、對於指標

1. int x=10; 

const int *r=&x;  

//指標

指向的內容是常量

,r指向的內容不能夠通過r改變,但如果指向的內容是非const(例如x),內容可以通過自己(x)改變,而且r指標可以改變,可以指向其它的整形.

*r=*r+1; //no

x++;    //yes

r=&y;   //yes

2. int const *r=&x; 

//與1完全相同

3. int * const r=&x; 

//指標指向是常量

,不能修改去指向其它內容,但指向的內容可以修改

r=&y;   no 

*r=*r+1;yes 

x++;yes

4.const int * const r=&x;

//綜合1、3用法,r是乙個指向常量的常量型指標,指標指向不能改變,指標內容不能改變, 如果指向的內容是非const(例如x),內容可以自身改變

r=&y;no

*r=*r+1;no

x++;yes

三、對於型別檢查

可以把非const物件賦予const指標,這樣就不能改變.

但是不能把const賦給非const指標

,除非先強制轉換

const int x=100;

int *p=(int*)&x; 

*p++;

四、對於函式

1.void fuction1(const int r); //此處為引數傳遞const值,意義是

變數初值不能被函式改變

2.const int fuction1 (int); //此處返回const值,意思指

返回的原函式裡的

變數的初值不能被修改

,但是函式按值返回的

這個變數被製成副本

,能不能被修改就沒有了意義,它

可以被賦給任何的const或非const型別變數

,完全不需要加上這個const關鍵字

。3.class cx; //內部有建構函式,宣告如cx(int r =0)

cx fuction1 ()

const cx fuction2 ()

fuction1() = cx(1); //沒有問題,可以作為

左值呼叫

fuction2() = cx(1); //編譯錯誤,

const返回值禁止作為左值呼叫

。4.函式中指標的const傳遞和返回:

int f1 (const char *pstr); //作為傳遞的時候使

用const修飾可以保證不會通過這個指標來修改傳遞引數的初值

const char *f2();//意義是

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

const char * const f3(); //比上面多了乙個const,這個const的意義只是在他被用作左值時有效,它表明了這個指標除了指向const物件外,它本身也不能被修改,所以就

不能當作左值來處理

。五、對於類

1.首先,

對於const的成員變數,只能在建構函式裡使用

初始化成員列表

來初始化

,試圖在建構函式體內進行初始化const成員變數會引起編譯錯誤。初始化成員列表形如:

x:: x ( int ir ): r(ir) {} //假設r是類x的const成員變數

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

。2.建立了乙個const成員函式,但仍然想用這個函式改變物件內部的資料。(函式不能修改類的資料成員)

//假如有乙個叫做x的類,它有乙個int成員變數r,我們需要通過乙個const成員函式f( )來對這個r進行++r操作,**如下

void x::f( ) const

//通過this指標進行型別強制轉換實現

const用法總結

const的作用 const是c語言的一種關鍵字,起受保護,防止以外的變動的作用!可以修飾變數,引數,返回值,甚至函式體。const可以提高程式的健壯性,你只管用到你想用的任何地方。一 const修飾引數。const只能修飾輸入引數。1 如果輸入引數是指標型的,用const修飾可以防止指標被意外修改...

const用法總結

const修飾的常成員函式可以理解為是乙個 唯讀 函式。如果一定要修改常物件中的每個資料成員的值,對該資料成員函式宣告為mutable,如 mutable int count 把count宣告為可變資料成員,即可改變。情況1 const位於 號左邊,const修飾指標所指向的變數,即指標指向為常量,...

const用法總結

顧名思義 const 是常量的意思即用const修飾的都是不可變的。1.const的用法 1 定義常量 char arr hello world constchar const p arr const出現在 左邊表示被指物是常量,在右邊表示指標自身是常量。宣告迭代器為cosnt就像宣告指標一樣,因為...