引用的概念和应用

类型名 & 引用名 =某变量名

int n=4;
int &r=n;  //r引用了n,r 的类型是  int&

某个变量的引用 ,等价于这个变量,相当于该变量的一个别名

int n=7;
int &r=n;
r=4
cout<<r;  //输出4
cout<<n;  //输出4
n=5;
cout<<r;  //输出5

引用的概念

  • 定义引用时一定要将其初始化成引用某个变量
  • 初始化后,他就一直引用该变量,不会再引用别的变量了
  • 引用只能引用变量,不能引用常量和表达式
double a=4,b=5;
double &r1=a;
double &r2=r1;  //r2也引用a
r2=10;
cout<<a<<endl;  //输出10
r1=b;           //r1并没有引用b
cout<<a<<endl;   //输出5

引用应用简单实例

void( int a, int b)
{
   int tmp;
   tmp=a;
   a=b;
   b=tmp;
}
int n1,n2;
swap(n1 ,n2);  //n1 n2的值并不会被交换
void swap(int *a,int *b)
{
   int tmp;
    tmp=*a;
    *a=*b;
    b=tmp;
}
int n1 ,n2;
swap(n1,n2);   //n1 n2值被交换

而用引用之后

void swap(int &a,int &b)
{
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}
int n1 ,n2;
swap(n1,n2);   //n1 n2值被交换

一个比较酷炫的引用

int  n=4;
int &SetValue(){return n;}
int main()
{
   SetValue()=40;
   cout<<n;
   return 0;
}
//输出:40

常引用

定义引用时,前面加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&类型的引用,除非进行强制类型转换

猜你喜欢

转载自blog.csdn.net/wo164683812/article/details/80039951