一、“引用”是啥?
引用(reference)是为对象起了另外一个名字,通过将声明符写成&d的形式来定义引用类型,其中d是申明的变量名。
int i = 1024;
int &iRef = i; //引用iRef指向i(是i的另外一个名字)
int &iRef2; //错误,引用必须初始化
二、使用“引用”的一些要求
- 引用必须在申明时初始化。
- 引用初始化之后就不能改变该引用指向的对象
- 引用类型的初始值必须是一个对象
int &i = 1024; //编译报错,引用类型的初始值必须是一个对象
- 创建引用只能针对同类型的对象
double pi = 3.14;
int &iRef = pi; //错误,类型不一样
三、为什么要提出“引用”这个概念?
个人理解:主要用于函数间调用时,不用再传递指针参数。比传递指针更安全,避免了指针直接操作内存的种种风险。
#include <iostream>
using namespace std;
//比较i1、i2大小
//如果i1大于i2则返回值大于0,如果相等则返回0.
int compare(int &i1, int &i2)
{
return (i1 - i2);
}
int main()
{
int i = -2;
int j = 2;
int &iRef = i;
int &jRef = j;
//引用本质上不是一个新的数据类型,所以这两种写法都不会编译报错
cout<< "out = "<< compare(iRef, jRef) << std::endl;
cout<< "out = "<< compare(i, j) << std::endl;
return 0;
}