C 中const修飾符講解 2

2021-10-08 23:39:20 字數 1864 閱讀 6482

今天在使用const程式設計時發現以下報錯,說我未初始化變數。後來查閱相關資料,發現這個博主的介紹還可以,因此寫下來提醒自己,方便以後的學習。

•const:常量限定修飾符,它把乙個物件轉換為常量(constant)。const物件必須初始化而且是在定義的同時。初始化後的const物件(或指標)是不能修改的。

例1:

int i = 0;

const int j = 0; // int const j = 0;

const int *p; // int const *p ;可改變p但不能改變*p

int* const p = &i; //可改變*p但不能改變p

const int * const p = &i; // int const * const p = &i; p,*p都不能改變

class test;

int main()

關於初始化:
一般情況下:const物件必須初始化而且是在定義的同時。

如果是在類中定義的, 即常資料成員,必須要在初始化列表進行初始化!

class test

};

•const修飾指標:

如果乙個變數已被宣告為常變數,只能用指向常變數的指標變數指向它。

int main()

•const修飾成員函式:const類物件只能呼叫const成員函式,而const成員函式不能修改類的成員變數。const成員函式若要修改某成員變數,就必須用mutable修飾該成員變數。

class test

};

error: increment of member 'test::i' in read-only object
例2:

class test

void set(int a)};

int main()

int main()
•const修飾函式引數:若是按值傳遞引數,不要用const修飾,因為這沒有作用,而且容易產生誤導。按值傳遞的函式引數最好是改為const的引用引數。

class test

void set(const int a)

};

int n;

static int _n;

void f(int = n);//錯誤!!!

void f2(int = _n);

: error c2648: 'n' : use of member as default parameter requires static member
•const修飾函式返回值:當函式返回值不是內部型別時,通常用const修飾返回值。因為函式返回值是個臨時物件,這樣有助於編譯器檢查出呼叫者試圖修改這臨時物件。•const的目的是正確性,而且沒有執行的開銷(編譯時完成)。在c++裡const的正確性僅僅是型別資訊的另一種形式,是把程式設計師頭腦裡的正確資訊語言化。

C 中const修飾符

const只對它左邊的東西起作用 唯一的例外就是const本身就是最左邊的修飾符,那麼它才會對右邊的東西起作用。指標常量 關鍵字順序為 const 和中文順序一致 例如 int const a,表示指標a是乙個常量,初始化後不可更改 永遠指向某個物件 但是指向的物件的值可以修改,如 a 10 常量指...

c 中的const限定修飾符

const 限定修飾符 1.const int buffersize 512 常量,不允許用非 const 物件指標指向 如int psize buffersize error const int psize buffersize right.2.const double pc dval 指向dou...

const 型別修飾符

const是用來限定所指定的變數或者函式不可作修改。1 修飾變數 當const用來修飾變數的時候,const所指定部分不可修改。a.修飾常規變數 如 const int a 10 int const a 10 這兩種方式的效果一樣,都是將a描述為常量,a的值在被賦初值後不可以修改。但是這和由巨集定義...