之前的 【C++】C++ 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过程如下 : 先定义 普通变量 a , 然后定义 已存在变量 a 的引用 b ;
这里的 引用 b 就是 普通引用 ;
// 定义变量 a
int a = 10;
// 定义变量 a 的引用 b
int& b = a;
普通引用代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
// 导入 C 头文件
#include
int main()
{
// I . 普通引用
// 定义变量 a
int a = 10;
// 定义变量 a 的 普通引用 b
int& b = a;
// 打印 普通引用 b 的值
printf("b = %d\n", b);
// 修改普通引用 b 的值
b = 20;
// 打印 普通引用 b 的值
printf("b = %d\n", b);
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :
b = 10
b = 20
Press any key to continue . . .
与 变量引用 相对的就是 常量引用 ;
常量引用 可以令 变量的引用 转为 常量 ; 即 不能通过 常量引用 修改 变量 ;
如果修改 常量引用 的值 , 编译时会报错 :
error C3892: “b”: 不能给常量赋值
在 C++ 语言中 , " 常量引用 " , 英文名称为 Const Reference , 是一种引用类型 , 另外一种引用就是 " 普通引用 " ;
使用 " 常量引用 " 可以将一个变量的值传递给一个函数的 常量引用形参 , 可以保证该变量值不会在函数内部被修改 ;
" 常量引用 " 常用于如下场景 :
常量引用 语法 :
const T& variable_name = value;
在下面的函数中 , 先声明了 普通变量 a ,
然后定义了 变量 a 的 常量引用 b ,
常量引用 b 其 本质就是一个常量 , 通过 常量引用 b 可以获取 变量 a 的值 , 但是无法修改 变量 a 的值 ;
如果强行通过 常量引用 b 修改 变量 a 的值 , 则会报错 :
error C3892: “b”: 不能给常量赋值
错误代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
// 导入 C 头文件
#include
int main()
{
// II . 常量引用
// 定义变量 a
int a = 10;
// 定义变量 a 的 常量引用 b
const int& b = a;
// 打印 常量引用 b 的值
printf("b = %d\n", b);
// 修改 常量引用 b 的值
// 报错 : error C3892: “b”: 不能给常量赋值
b = 20;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :
已启动生成…
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>hello_world.cpp
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(24,2): error C3892: “b”: 不能给常量赋值
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========