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引用可以绑定到不同但是相关的类型上。

 

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