1 引用
引用就是给一个变量取“别名”,这也就意味着引用值(别名)改变的话,原值必然也跟随改变。
引用的本质是指针常量(编译器内部会自动完成指针操作)。
int a = 15;
//自动转换为 int* const ref = &a
//指针常量的指向不会变化,印证了引用不可变的特性
int& ref = a;
1.1 常量引用
常量引用主要用来修饰形参,防止误操作引用值,进而改变原始变量的值。
//引用通常用来修饰形参
//这里形参增加const之后,在该函数中v值不可发生变化。
void showValue(const int& v) {
//v += 10; //不可修改;error-需要是可修改的左值
cout << v << endl;
}
int main() {
//引用本身需要一个合法的内存空间,因此这行错误
//需要先有定义原始变量,同时为原始变量分配内存空间
//int& ref = 10;
//加入const就可以了,编译器优化代码,int temp = 10; const int& ref = temp;
const int& ref = 10;
//ref = 100; //加入const后不可以修改变量
cout << ref << endl;
//函数中利用常量引用防止误操作修改实参
int a = 10;
showValue(a);
system("pause"); //暂停退出输出屏幕(使得黑屏保持停留)
return 0;
}
1.2 引用做函数返回值
引用可以作为函数返回值使用。
切记不能返回局部变量。(局部变量在栈区存储,它的声明周期仅限函数执行的周期内,执行结束之后编译器会自动的释放掉,这样会导致引用值出现意想不到的结果)
|