解释
引用相当于给对象起了一个新的名字。
简单用法:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a = 10;
int &b = a;
cout<<b<<endl;
return 0;
}
结果:
注意事项
1、引用必须初始化
与初始化变量不一样,在定义引用的时候,程序会把引用和它引用的对象绑定在一起,不是简单的赋值操作,引用初始化完成后,它将和它引用的对象一直绑定在一起,无法再像赋值操作那样再绑定别的对象
2、引用必须类型匹配
像上面例子,a是一个整型,那么引用就不能是其他的类型
如:
是错误的
3、引用的初始化值必须是一个对象,不能是值
如
是错误的
const的引用
顾名思义,就是对常量的引用
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int a = 20;
const int &b = a;
cout<<b<<endl;
return 0;
}
注意:这里引用之后,是不能通过b修改a的值的
另外一种用法:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a = 20;
const int &b = a;
cout<<b<<endl;
return 0;
}
这里同样,不能对b进行操作改变a,但是a可以由其他途径正常修改
引用做函数形参
#include <iostream>
#include <string>
using namespace std;
void myswap(int &a, int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int main()
{
int a = 20, b = 10;
myswap(a,b);
cout<<"a:"<<a<<'\t'<<"b:"<<b<<endl;
return 0;
}
输出结果
这里的作用相当于指针,通过引用形参可以修改实参
引用做函数返回
用法
#include <iostream>
#include <string>
using namespace std;
int a = 10;
int& example()
{
return a;
}
int main()
{
int &b = example();//使用一个引用类型来接收引用类型的返回值
cout<<b<<endl;
return 0;
}
但是,不能返回局部变量的引用
如
这里a是局部变量,不能对它做引用返回。因为当前函数结束后,a变量的内存会被释放掉,如果函数结束后,还对该地址进行操作就是非法操作,是不允许的。