引用基本使用
- 作用:给一个变量起别名;用法:
类型名称 &引用名 = 原名
int b = 3;
int &a = b;
- 注意事项: 引用必须初始化,初始化后不能更改引用的对象(因为引用本身是一个指针常量); 不要返回局部变量的引用,因为局部变量使用结束后会被销毁,引用的对象将不再存在。
- 引用修饰函数形参时,相当于给实参取别名,对形参的修改将直接作用于实参。
void mySwap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 3, b = 5;
mySwap(a, b);
printf("a = %d, b = %d\n", a, b);
}
- 引用的本质是一个指针常量,指针常量是指针指向不可改,也说明为什么引用不可更改.
int b = 3;
int &a = b; // 等价于 int* const p = &b;
a = 10; // 给引用a赋值时,等价于 *a = 10;
- 常量引用,作用:常量引用主要用来修饰形参,防止误操作,在函数形参列表中,可以加const修饰形参,防止形参改变实参
void showValue(const int &v) { // 使用引用,减少形参值传递带来的时间和空间花销,同时对引用的修改可能影响实参的值,因此用const修饰形参,防止形参改变实参
cout << v << endl;
}