引用的本质
是一个指针常量,一旦初始化后, 即不能发生改变 ,数据类型为int* const
c++推荐使用引用,因为语法方便,所有关于指针的操作由编译器完成
void func(int& ref)
{
ref = 100; // ref是引用,编译器转换为 *ref = 100
}
int main()
{
int a = 10;
int& ref = a; //自动转换为 int* const ref = &a
ref = 20; // 转换为 *ref = 20,通过ref修改a
func(a); // 传入指针常量,通过解引用 *ref = 100 修改 a = 100
return 0;
}
常量引用
常量引用主要用来修饰形参,防止误操作
//打印数据函数
void showValue(int &val)
{
val = 1000; //误操作,修改了值
cout << "val:" << val <<endl;
}
void showValue(const int &val)
{
val = 1000; //错误,表达式必须是可修改的左值
cout << "val:" << val <<endl;
}
int main()
{
int a = 10;
int& ref = 10; //引用必须引用一块合法的内存空间
const int& ref = 10;
//加上const之后,编译器修改为int temp = 10; const int& ref =temp;
//ref 加上const之后,变为只读,无法修改
//函数中利用常量引用防止误操作修改实参
int a = 10;
showValue (a);
//避免了值传递的拷贝副本造成空间浪费
//同时避免了指针传递或引用传递误操作修改实参
return 0
}