概念:
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。
引用的特性:
1、引用在定义是必须初始化
int x=0;
int& a=x;
2、一个变量可以有多个引用
int& b=x;
int& c=x;
3、一个引用只能引用一个实体
引用的场景
引用传值传参会提高效率
1、做输出型参数(型参的改变也要改变实参)
swap(int& left,int& right){
int tmp=left;
left=right;
right=tmp;
}
2、做返回值 静态变量做返回值是也会产生临时变量
减少拷贝临时变量 提高效率
可以修改返回值
注意:如果函数返回时,出了函数作用域,如果返回对象还在(还没还给系统),则可以使用 引用返回,如果已经还给系统了,则必须使用传值返回。
int& func(int a,int b)
{
int ret=a;
return ret;
}
int mian(){
int ret=func(1,2);//这样不可以
int& ret=func(1,2);// 这样也可以
}
引用过程中权限不能放大
const int a=1;
int& b=a;//这样不可以 权限放大了
还有类型转换的过程中会产生临时变量 也不能
double& c=a;//不可以哦