1. 程式人生 > >c++中常引用const int &a的介紹

c++中常引用const int &a的介紹

引用

  • 引用:簡單的講就是某個變數的別名。對一個變數的“引用”的所有操作,實際上都是對其所代表的(原來的)變數的操作。

  • 設有一個變數x,要給它起一個別名y,可以這樣寫:

int x;    // 定義變數x  
int &y = x;// 宣告y是一個浮點型變數的引用變數,它被初始化為x

聲明後,使用x或y代表同一變數。在上述宣告中,&是“引用宣告符”長相與取地址符相同

  • 對引用而言,新定義的引用變數是不申請記憶體單元的,與它引用的物件共同同一塊變數儲存單元,正是因為這一特性,在宣告一個引用的同時必須將其初始化
int &c=a;//正確
int &c;//錯誤
  • 在函式中宣告一個變數的引用後,在函式執行期間,該引用一直與其代表的變數相聯絡,不能再作為其他變數的別名。例如:
int a, b;       // 定義整型變數a,b
int &c = a; // 使c成為變數a的引用
int &c = b; // 又使c成為變數b的引用是錯誤的
  • 在c++中加入引用的主要目的是為了給函式傳參。在C語言中,將變數名作為實參。這時將變數的值傳遞給形參。傳遞是單向的,在呼叫函式時,形參和實參不是同一個儲存單元。在執行函式期間形參值發生變化並不傳回給實參。
    而引用與他所引用的物件共用同一塊記憶體空間,在函式中直接改變引用的值,原變數的值也會隨之改

常引用

  • 常引用就是在引用之前加上const對引用進行限制,使得該引用在函式中不能進行改變(但可以改變原變數的值),例如
int a = 6;      // 定義整型變數a,初值為6
const int &b = a;   // 宣告常引用,不允許改變b的值
b = 8;      // 改變常引用b的值,錯誤
a = 8;      // 改變a的值,正確
  • 常引用通常用作函式形參,這樣能保證形參的不被改變

關於常引用的宣告
- 在宣告時,可以用常量或者是表示式常引用進行宣告

int a = 6;          // 定義變數
const int &b = a + 3
; // 正確,可以用表示式對常引用進行初始化 int &c = a + 3; // 錯誤,對非常引用只能用變數進行初始化
  • 在以表示式的形式對常引用進行宣告時,系統將自動生成一個臨時變數,用這個臨時變數存表達的值,之後常引用實是這個臨時變數的引用。
    例如將const int &b=a+7;自動轉化為
int temp=a+7;//臨時變數temp
const int &b=temp;