@2020/9/12 讀自c++ primer 2.4.1
正常情況下,使用const限定符修飾的物件是不允許被改變的,如
int a =0;
const int i1 = a;
const int i2 =
50;
其中i1
和i2
的值不允許被改變。
但在某些情況,這種規定是可以被改變的!!!
在《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是...