定义一个引用,并将其初始化为某个变量。
类型名 & 引用名 = 某变量名;
int n=10;
int & r=n; //r引用了n,r的类型是 int &
引用的概念
1.定义引用时一定要将其初始化为某个变量。
2.初始化后,它就一直引用该变量,不会再引用别的变量了。
3.引用只能引用变量,不能引用常量和表达式。
引用的例子
double a=4,b=5;
double & r1=a;// r1引用a
double & r2=r1;// r2引用r1 r2也引用了a
r2=10;
cout<<a<<endl;//输出10
r1=b;//r1没有引用b 只是把b的值赋给r1
cout<<a<<endl;//输出5
有了c++的引用 在c++中用函数来交换两个数
#include<bits/stdc++.h>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int main()
{
int n,m;
cin>>n>>m;
swap(n,m);// 让a引用n,b引用m,当a,b交换变化之后,n和m也完成交换
cout<<n<<" "<<m;
return 0;
}
常引用
定义引用时,前面加const关键字,即为“常引用”
int n;
const int &r =n;
r的类型是 const int &
不能通过常引用去修改其引用的内容
int n=100;
const int & r=n;
r=200;//编译出错
n=300;//编译没问题
常引用引用的值还是可以改变的,只是不能通过常引用来改变他所引用的值。
常引用和非常引用的转换
const T & 和 T & 是不同的类型!!!
T & 类型的引用或 T 类型的变量可以用来初始化 const T & 类型的引用。
const T 类型的常变量和 const T &类型的引用则不能用来初始化 T &类型的引用,除非进行强制类型转换。