C++中的引用

C++中的引用

   引用就是變量的別名,在實際情況下,引用一般用於函數的形式參數。

一、引用規則

      引用是一種複合類型,是通過在變量名前加上“&”來定義的,複合類型是指用其他類型定義的類型,引用類型一定關聯其他一種類型,但不可以定義引用類型的引用。引用就是變量的一個別名,引用定義的時候必須初始化也就是必須明確指向哪一個變量。

    引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。

 

  引用的聲明方法:類型標識符 &引用名=目標變量名;

 

  【例1】:int a; int &ra=a; //定義引用ra,它是變量a的引用,即別名

 

  說明:

 

  (1)&在此不是求地址運算,而是起標識作用。

 

  (2)類型標識符是指目標變量的類型。

 

  (3)聲明引用時,必須同時對其進行初始化。

 

  (4)引用聲明完畢後,相當於目標變量名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作爲其他變量名的別名。

 

  ra=1; 等價於 a=1;

 

  (5)聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不佔存儲單元,系統也不給引用分配存儲單元。故:對引用求地址,就是對目標變量求地址。&ra與&a相等。

 

  (6 ) 不能建立數組的引用。因爲數組是一個由若干個元素所組成的集合,所以無法建立一個數組的別名.

 

  (7)不能建立引用的引用,不能建立指向引用的指針。因爲引用不是一種數據類型,所以沒有引用的引用,沒有引用的指針。

 

  例如:

 

  int n;

 

  int &&r=n;//錯誤,編譯系統把"int &"看成一體,把"&r"看成一體,即建立了引用的引用,引用的對象應當是某種數據類型的變量

 

  int &*p=n;//錯誤,編譯系統把"int &"看成一體,把" *p "看成一體,即建立了指向引用的指針,指針只能指向某種數據類型的變量

 

  (8)值得一提的是,可以建立指針的引用

 

  例如:

 

  int *p;

 

  int *&q=p;//正確,編譯系統把" int * "看成一體,把"&q"看成一體,即建立指針p的引用,亦即給指針p起別名q。

   二、const引用

    const引用是指向const對象的引用,

   const int i =  10;

   const int &j = i;

    int &n = i;//error 因爲n可改變,這與i不可變就造成了矛盾。

   double i = 10;

  double &j = j;

  const double &n = j;

  const int &m = i;

   int &l = i;//error.

非const引用只能幫定到與之相同類型的變量上,而const引用可以綁定到不同但是相關的類型上。

 

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