C++引用
一、引用变量声明
int a=10;
int &b=a;
【注意】
- 引用必须初始化;
- 引用在初始化后,不可以改变;
- 使用 “=” 赋值后,引用指向的数据被改变。
二、引用做函数返回值
int& test01(){
int a=10;
return a;
}
//使用引用接收函数的返回值
int &ref=test01();
编译器会保留一次引用的函数返回值,之后该内存就被编译器释放(局部变量存放在栈区),第二次操作ref是非法的,所以不要返回局部变量的引用。
三、函数的调用可以作为左值
int& test02(){
static int a=10;
return a;
}
//使用引用接收函数的返回值
int &ref2=test02();
//函数的调用作为左值
test02()=1000;//相当于a=1000;
在最后直接打印ref,ref的值为1000。因为ref是a的别名。
四、引用的本质
引用的本质在C++内部的实现是一个指针常量。
void func(int& ref){
ref=100;
}
int main(){
int a=10;
int& ref=a;//自动转换为 int* const ref=&a;指针常量是指针指向不可更改,也就是为什么引用不可更改
ref=20;//自动转换为 *ref=20;
cout<<"a="<<a<<endl;
cout<<"ref="<<ref<<endl;
func(a);
cout<<"a="<<a<<endl;
cout<<"ref="<<ref<<endl;
return 0;
}
【打印结果】
a=20
ref=20
a=100
ref=100
【结论】
C++推荐使用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作由编译器完成。
五、常量引用
使用场景:用来修饰形参,防止误操作。
int& ref=10;//这句代码将会报错,因为引用必须引一块合法的内存空间
const int& ref=10;//加上const后,编译器将代码修改为int temp=10; const int& ref=temp;
ref=20;//加上const后ref变为只读,不可修改
//例如打印函数
void showValue(const int& ref){
cout<<"ref="<<ref<<endl;
}
文章详细介绍了C++中的引用概念,包括引用的声明与初始化,引用作为函数返回值的注意事项,函数调用作为左值以及引用的本质——指针常量。此外,还讨论了常量引用的作用,防止对引用对象的误修改,并提供了相关示例进行解释。
1197

被折叠的 条评论
为什么被折叠?



