类型标识符 &引用名=目标变量名;
例:int a=5;
int &ra=a;
注:ra是a的别名,a和ra就是指的同一个变量,使用方式完全一样。ra=1等价于a=1。
引用本身不占存储单元,因此对引用求地址就是对目标变量求地址。&ra=&a。
在声明引用类型变量时,必须同时对它进行初始化(说明所引用的对象)。初始化后,对应关系不再改变。
引用返回值
函数的返回值为引用类型表示该函数的返回值是一个内存变量的别名,可以将该函数的调用语句作为变量直接使用。如min(a,b)++; //a、b中的最小值自增1。
引用返回值不能返回函数内局部变量的引用,因为当函数执行完毕后,该局部变量将不再存在,同样,也应避免返回临时变量的指针。
返回非引用类型的函数将在返回语句执行时,创建一个临时变量用于存储返回值,即返回的是临时变量的值。
用const限定引用
当用const限定引用时,不能通过引用改变被引用的空间的值,如:
int i=5;
const int &ri=i;
ri=10; //不能通过引用修改
cout<<ri; //可以通过引用访问
但是const对ri的限制不影响它所引用的变量i,如:
i=10; //可以
对一个常变量进行引用时,必须将这个引用定义为const,如:
const int ci=10;
int &rci=ci; //错
const int & rci=ci;//正确
当若函数实参与引用参数不匹配,C++将生成临时变量。如果参数为const,则编译器将在下面两种情况下生成临时变量:
1.实参的类型正确,但不是左值;(左值为赋值语句左边的值,包括常量变量和const变量)
2.实参的类型不正确,但可以转换成正确的类型。
注:当实参与引用参数不匹配时,C++生成的临时变量传入到函数作为引用参数,临时变量的参数可能会改变,但不会改变函数体外类型不匹配的实参的值。(类似按值传递)
若void stove(double && r) //&&表示传递参数为右值