C++學習筆記(2)之引用詳解

引用就是對象的另外一個名字。在實際的程序中,引用主要用作函數的形式參數
下面用獨立的對象來介紹並舉例說明引用的用法:引用是一種複合類型,通過在變量名前面添加“&”符號來定義。複合類型是指用其他類型定義的類型。可以定義任何其他類型的引用,但是不能定義引用類型的引用,換句話來說就是引用初始化後不能引用其他引用。
1. 引用必須用與該引用同類型的對象初始化(引用一旦定義就要進行初始化,且初始化值不能爲空,初始化是指明引用指向哪個對象的唯一方法)。
int a= 1024;//這裏a爲一個對象
int &b=a;// 對
int &c;//錯,引用定義必須進行初始化
int &d=123;//錯,初始化值必須是與該引用同類型的對象

2. 引用是別名
因爲引用只是它綁定的對象的另外一個名字,作用在引用上的所有操作事實上都是作用在該引用綁定的對象上:
上面例子中引用b表示,b和a是指向同一塊地址空間的(b是a的另外一個名字),所以對b進行操作也就是對b綁定的對象a進行操作。再比如張三有一個外號叫張狗蛋,張三是a,引用b就是張狗蛋,其實張三和張狗蛋是同一個人。

3. 定義多個引用
可以在一個類型定義行中定義多個引用,注意:必須在每個引用標識符前添加“&”符號:
int i=10,i1=20;//
int &r=I,r1=i1;//r是一個引用,r1是一個int型
int i2=1024,&ri=i2;//定義一個對象,一個引用
int &r3=i2,&r4=i1;//定義兩個引用

4. const引用
const引用是指向const對象的引用:
const int ival=123;
const int &refVal =ival;//可以,對象和引用都是const型的
int &ref2=ival;//不可以,非const引用對應一個const對象
---------------------------------------------------------------------------------------------------------------------------------
這裏說一下const限定符:const把一個對象轉換成一個常量,如:
const int bufSize=1024;定義bufSize爲常量並初始化爲1024.此變量仍然爲一個左值,但是現在這個左值不能夠被修改。任何修改bufSize的嘗試都會導致編譯錯誤:
bufSize=0;//error
因爲常量在定義後就不能被修改,所以定義時必須初始化
---------------------------------------------------------------------------------------------------------------------------------
const引用可以初始化爲不同類型的對象或者初始化爲右值,這裏與非const不同,如字面值常量
int i=42;//只有const是合法的
const int &r=42;
const int &r2 = r+i;
------------------------------
double dval=3.14;const int &ri=dval;
注意:非const引用只能綁定到與該引用同類型的對象

const引用則可以綁定到不同但相關的類型的對象或者綁定到右值。

關於引用作爲參數進行傳遞的細節,可以看本博客上一篇文章 http://blog.csdn.net/baidu_32134295/article/details/53914792

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章