c++ const引用與非const引用介紹
更新時(shí)間:2013年01月31日 17:01:28 作者:
const引用是指向const對(duì)象的引用,可以讀取ref,但不能修改所以也就有將const變量賦值給非const引用是非法的,感興趣的朋友可以了解下,或許本文對(duì)你有所幫助
const引用是指向const對(duì)象的引用。
const int i = 10;
const int &ref = i;
可以讀取ref,但不能修改。這樣做是有意義的,因?yàn)閕本身就不可修改,當(dāng)然也不能通過(guò)ref來(lái)修改了。所以也就有將const變量賦值給非const引用是非法的。
int &ref1 = i; // error: nonconst reference to a const object
非const引用是指向非const類型變量的引用。
const引用可以初始化為不同類型的對(duì)象或者右值(如字面值常量),但非const引用不可以。
// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;
double d = 3.14;
const int &ref2 = d;
以綁定到不同類型的ref2為例解釋原因,編譯器會(huì)把ref2相關(guān)的代碼轉(zhuǎn)換如下:
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2實(shí)際上是綁定到一個(gè)臨時(shí)變量上,如果ref2不為const,那么按道理就可以通過(guò)修改ref2而修改d的值,但實(shí)際上d并不會(huì)改變。所以為了避免這個(gè)問(wèn)題,ref2只能是const。
非const引用只能綁定到與該引用同類型的對(duì)象,const引用則可以綁定到不同但相關(guān)的類型的對(duì)象或綁定到右值。
復(fù)制代碼 代碼如下:
const int i = 10;
const int &ref = i;
可以讀取ref,但不能修改。這樣做是有意義的,因?yàn)閕本身就不可修改,當(dāng)然也不能通過(guò)ref來(lái)修改了。所以也就有將const變量賦值給非const引用是非法的。
復(fù)制代碼 代碼如下:
int &ref1 = i; // error: nonconst reference to a const object
非const引用是指向非const類型變量的引用。
const引用可以初始化為不同類型的對(duì)象或者右值(如字面值常量),但非const引用不可以。
復(fù)制代碼 代碼如下:
// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;
double d = 3.14;
const int &ref2 = d;
以綁定到不同類型的ref2為例解釋原因,編譯器會(huì)把ref2相關(guān)的代碼轉(zhuǎn)換如下:
復(fù)制代碼 代碼如下:
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2實(shí)際上是綁定到一個(gè)臨時(shí)變量上,如果ref2不為const,那么按道理就可以通過(guò)修改ref2而修改d的值,但實(shí)際上d并不會(huì)改變。所以為了避免這個(gè)問(wèn)題,ref2只能是const。
非const引用只能綁定到與該引用同類型的對(duì)象,const引用則可以綁定到不同但相關(guān)的類型的對(duì)象或綁定到右值。
您可能感興趣的文章:
- C/C++中命名空間(namespace)詳解及其作用介紹
- C++命名空間實(shí)例解析
- C++入門(命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto,范圍for)
- C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- c++內(nèi)聯(lián)函數(shù)(inline)使用詳解
- C++11關(guān)于auto關(guān)鍵字的使用示例
- C++命名空間?缺省參數(shù)?const總結(jié)?引用總結(jié)?內(nèi)聯(lián)函數(shù)?auto關(guān)鍵字詳解
相關(guān)文章
基于OpenCV實(shí)現(xiàn)車道線檢測(cè)(自動(dòng)駕駛 機(jī)器視覺)
無(wú)人駕駛技術(shù)是機(jī)器學(xué)習(xí)為主的一門前沿領(lǐng)域,在無(wú)人駕駛領(lǐng)域中機(jī)器學(xué)習(xí)的各種算法隨處可見,本文將為大家介紹無(wú)人駕駛技術(shù)中的車道線檢測(cè),感興趣的小伙伴可以了解一下2021-11-11C語(yǔ)言中帶頭雙向循環(huán)鏈表基本操作的實(shí)現(xiàn)詳解
無(wú)頭單向非循環(huán)鏈表結(jié)構(gòu)簡(jiǎn)單,一般不會(huì)單獨(dú)用來(lái)存數(shù)據(jù)。而帶頭雙向循環(huán)鏈表的結(jié)構(gòu)較為復(fù)雜,一般用在單獨(dú)存儲(chǔ)數(shù)據(jù)。本文將介紹帶頭雙向循環(huán)鏈表的基本操作,需要的可以參考一下2022-11-11利用Matlab制作一款刮刮樂(lè)抽獎(jiǎng)特效
七夕節(jié)還不知道送啥,教你用MATLAB制作一款刮刮樂(lè)抽獎(jiǎng)特效,讓她的手氣決定她的禮物。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03C語(yǔ)言詳解實(shí)現(xiàn)猜數(shù)字游戲步驟
猜數(shù)字是興起于英國(guó)的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來(lái)實(shí)現(xiàn)這個(gè)游戲案例2022-07-07詳解C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理的相關(guān)知識(shí),以及常見的動(dòng)態(tài)內(nèi)存的錯(cuò)誤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的三子棋項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的三子棋項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08