const限定符的一點妙用

2021-10-09 09:25:22 字數 918 閱讀 1762

@2020/9/12 讀自c++ primer 2.4.1

正常情況下,使用const限定符修飾的物件是不允許被改變的,如

int a =0;

const int i1 = a;

const int i2 =

50;

其中i1i2的值不允許被改變。

但在某些情況,這種規定是可以被改變的!!!

在《c++ primer》2.4.1節中提到

引用的型別必須與其所引用物件的型別一致,但是有兩個例外。第一種例外就是在初始化常量引用時允許用任意表示式作初始值,只要該表示式的結果能轉換成引用的型別即可。

以下這種情況是被允許的:

int a =0;

const int &r1 = a;

//甚至可以引用常量

const int &r2 =

50;

在使用常量引用時,直接對r1進行改變肯定是不允許的。可如果改變a的值,r1是否會隨之改變呢:

a =26;

std:

:cout >>

"a = "

>> a >> std:

:endl;

std:

:cout >>

"r1 = "

>> r1 >> std:

:endl;

輸出結果為:

a = 26

r1 = 26

常量引用的值被改變了。在允許被改變時使用a,不允許被改變時使用r1,可能會產生一些奇妙的效果。

關於const 限定符

很多引用自c primer一書 比如有時候需要將乙個文字中的資料複製到另外乙個文字。我們需要使用緩衝區,緩衝區的大寫我們可以自己來決定比如1024個位元組,這是乙個常量,我們使用bufsize 1024.但是bufersize物件本身是乙個變數。所以我們可以引入const限定符,它將乙個物件轉化為常...

異常,const限定符

異常 1.掌握語句 throw 用於丟擲異常資訊,交出 控制權,一旦丟擲資訊,被catch子句捕獲到異常資訊,的控制權就轉移到對應的子句上了。丟擲多種資料型別。catch捕獲 try 這個語句上執行可能出現異常的 塊,如果有異常,可以搭配throw語句。catch 捕獲異常,搭配try語句使用。in...

const 型別限定符

1.以const關鍵字宣告的物件,其值不能通過賦值或遞增 遞減來修改。例 const int a 限定a的值不能被修改 a 12 不允許 2.在指標中使用const const float pf pf指向乙個float型別的const,建立了pf指向的值不能更改 float const pt pt是...