传智扫地僧课程学习笔记。
引用,
已定义变量的别名,
int a = 10;
int &b = a;
b = 20;
此时操作b,就是在操作a,
来让我们看看内幕,
int a = 10;
int &b = a; // int *const b = &a;
b = 20; //*b = 20;
旁边的注释,就是C++编译器帮我们做的工作,
普通引用必须显示初始化,比如int &c; 这样就是错的,
作为函数形参的时候,不用,
下面是经典的两数交换函数的3个版本,
版本1:
void swap( int a, int b)
{
int c = a;
a = b;
b = c;
}
swap( x,y); //这样其实没有达到我们想要的交换目的,
版本2:
void swap( int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
swap( &x, &y); //这样写的话,能交换
版本3:
void swap( int &a, int &b)
{
int c = a;
a = b;
b = c;
}
swap( x,y);
//这样写的话,也能交换,这种情况下,引用初始化不用赋值,调用函数的时候,直接扔变量即可,不用取地址,其实是编译器帮我们取地址了,