一.引用宣告
我們知道c中的& 符號表示取位址,而在c++中&是表示引用。引用也就是為乙個變數起別名,當我們對該別名操作,與直接對該變數進行操作,效果是一樣的。
宣告:型別識別符號 &引用名 = 目標變數名
例如:int a = 3; int &ra = a;//定義引用ra,
ra = 4; //改變ra的值,此時a 也變成4
《說明》:
(1) &不是取位址符 而是起標識作用
(2)型別識別符號是指目標變數的型別
(3)宣告引用時候 必須同時進行初始化
(4)宣告完畢後 相當於這個目標變數名有兩個名字,且不能將這個引用名當做其他目標變數的別名
(5)引用,不是一種資料型別,不佔儲存空間。對其求位址就是對目標變數求位址。&ra = &a;
應用場景
swap(int&a,int&b)
main()
由上面內容可知,
傳引用時候,由於傳入的是實參,被調函式中對引用的操作,其實是直接對實參的操作。形參不需要新開闢儲存空間,形參是實參的引用。
值傳遞時候,當發生函式呼叫時,需要給形參分配儲存空間,並將實參內容拷貝到形參內,被調函式對形參進行操作。
2. 常引用
宣告:const 型別識別符號 &引用名 = 目標變數名
這種方式的引用,不能通過引用來修改變數的值。從而提高**健壯性等。
例如 3. 引用作為返回值
型別識別符號 & 函式名(形參列表)
用引用返回乙個函式值的最大好處是不產生被返回的副本。
float temp;//全域性變數 temp;
float func(float r);//宣告函式func
float &func2(float r);//宣告函式func2
float func(float r)
float &func2(float r)
void main()
4 引用與多型
基類引用 可以指向派生類,且基類只能訪問派生類從基類繼承下來的成員。
若基類中含有虛函式,這樣就可以通過基類引用實現多型。
參考:
C C 引用( )的用法
補充在開頭 在boost中看到,就直接貼 了,在c 中使用指向陣列的引用,compiler can deduce template arguments 在函式的宣告中用陣列的引用定義,就不怕陣列退化了。想要定義乙個陣列引用型別,方法如下 typedef 型別明 陣列引用型別明 n int rn3 3...
指標引用的用法
指標引用就是乙個指標的引用,看下面例1 int a 10 int b 20 void swap int lhs,int rhs swap a,b 上面的程式可以成功交換兩個int值,但是如果形參傳的是int而非其引用的話則不會交換2個int值,因為形參非引用的情況下,編譯器會複製a,b然後把a,b的...
C C 引用的用法
一.引用的基本用法 引用型別 其本質上是指標,在學習時可以和指標相對照。指標型別 int double object 引用型別 int double object 指標的使用 int a 123 int p a p 999 引用的使用 int a 123 int r a r 999 對r的操作就是對...