2.4 引用做函数返回值
- 作用: 引用是可以作为函数的返回值存在的
- 注意: 不要返回局部变量引用
- 用法: 函数调用作为左值
#include<iostream>
using namespace std;
//引用做函数的返回值
//1. 不要返回局部变量的引用
int& test01()
{
int a = 10;//局部变量, 存放在四区中的栈区
return a;
}
int& test02()
{
static int a = 10;//静态变量, 存放在四区中的全局区
return a;
}
//2. 函数的调用可以作为左值
int main()
{
int& ref1 = test01();
cout << "ref1 = " << ref1 << endl;
cout << "ref1 = " << ref1 << endl;
int &ref2 = test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
system("pause");
return 0;
}
运行结果如下:
可以看出, 引用局部变量(存放在栈区)时, 无法输出目标值。使用静态变量(存放在全局区)时,可以输出目标值。
2.5 引用的本质
本质: 引用的本质在c++内部实现是一个指针常量
也导致了它的特质:引用一旦初始化后就无法修改
结论: C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
2.6 常量引用
作用: 常量引用主要用来修饰形参,防止误操作
在函数形参列表中,可以加const修饰形参
防止形参改变实参
示例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//打印数据函数
void showValue(const int& val)
{
//val = 1000;
cout << "val = " << val << endl;
}
int main()
{
//常量引用
//使用场景:用来修饰形参,防止误操作
int a = 10;
//int a = 10;引用必须引用一块合法的内存空间
//加上const之后, 编译器将代码修改 int temp = 10 & ref = temp;
const int& ref = 10;//引用必须引用一块合法的内存空间
system("pause");
return 0;
}