c++ const引用與非const引用
const引用只讀不可修改,與綁定對象是否為const無關。非const引用可讀可改,下面內容由小編為大家介紹c++ const引用與非const引用,供大家參考!
const引用是指向const對象的引用。
複製代碼 代碼如下:
const int i = 10;
const int &ref = i;
可以讀取ref,但不能修改。這樣做是有意義的,因為i本身就不可修改,當然也不能通過ref來修改了。所以也就有將const變量賦值給非const引用是非法的。
複製代碼 代碼如下:
int &ref1 = i; // error: nonconst reference to a const object
非const引用是指向非const類型變量的'引用。
const引用可以初始化為不同類型的對象或者右值(如字面值常量),但非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為例解釋原因,編譯器會把ref2相關的代碼轉換如下:
複製代碼 代碼如下:
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2實際上是綁定到一個臨時變量上,如果ref2不為const,那麼按道理就可以通過修改ref2而修改d的值,但實際上d並不會改變。所以為了避免這個問題,ref2只能是const。
非const引用只能綁定到與該引用同類型的對象,const引用則可以綁定到不同但相關的類型的對象或綁定到右值。
-
C語言數據結構中棧操作實驗大綱
c語言中棧是一種數據結構,後進先出,即最後進入棧的數據最先彈出。以下是本站小編搜索整理的關於C語言數據結構中棧操作實驗,需要的`朋友可以參考一下!想了解更多相關信息請持續關注我們應屆畢業生考試網!實驗:編寫一個程序實現順序棧的各種基本運算,並在此基礎上設...
-
2017年計算機二級C語言對C語言的深入探討知識點
引導語:它的應用範圍廣泛,具備很強的數據處理能力。以下是本站小編分享給大家的2017年計算機二級C語言對C語言的深入探討知識點,歡迎閲讀!【考點1】編譯預處理凡以#開頭的這一行,都是編譯預處理命令行,編譯預處理不加分號,不佔運行時間。宏替換僅是簡單的文本替換,如#...
-
瞭解什麼是編程語言
學習編程語言之前,首先要搞清楚“編程語言”這個概念。下面一起來看看!很小的時候,父母就教我們開口説話,也教我們如何理解別人講話的意思。經過長時間的薰陶和自我學習,我們竟然在不知不覺中學會了説話,同時也能聽懂其他小朋友説話的意思了,我們開始向父母要零花錢...
-
2017年計算機二級考試C語言備考題及答案
計算機二級對於很多考生來説還是比較有難度的,那麼怎樣順利通過二級考試呢?這就需要大家平時多練習和找方法了。以下是本站小編整理的2017年計算機二級考試C語言備考題及答案,希望對大家有幫助!1.(A)是構成C語言程序的基本單位。A、函數B、過程C、子程序D、子例...
相關文章
- Sentence Completion訓練SAT備考習題
- C++中const-cast與reinterpret-cast運算符的用法
- Unit3 How do you get to school?(Section B 2a-2c)
- SAT官方指南Senctence Completion的練習題
- Connect to Idle Instance問題的解決方法
- SAT Sentence Completion英語選擇題
- 【薦】Unit3 How do you get to school?(Section B 2a-2c)
- C語言中Static和Const關鍵字的作用
- 七年級Unit 4 Don’t eat in class. Section A説課稿
- CentOS上搭建Nginx+Mono運行asp.net環境配置教程