C++知识点:const用法
1. 基本简介
const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。
2. 修饰变量
2.1 修饰普通类型的变量
const int a = 7;
int b = a; // 正确
a = 8; // 错误,不能改变

对于 const 变量 a,我们取变量的地址并转换赋值给 指向 int 的指针,然后利用 *p = 8; 重新对变量 a 地址内的值赋值,然后输出查看 a 的值。
从下面的调试窗口看到 a 的值被改变为 8,但是输出的结果仍然是 7。

如果不想让编译器察觉到上面到对 const 的操作,我们可以在 const 前面加上 volatile 关键字。
Volatile 关键字跟 const 对应相反,是易变的,容易改变的意思。所以不会被编译器优化,编译器也就不会改变对 a 变量的操作。

2.2 修饰指针变量
修饰指针变量有以下三种情况:
- A: const 修饰指针指向的内容,则内容为不可变量。
const int *p = 8;
则指针指向的内容 8 不可改变。简称左定值,因为 const 位于 * 号的左边
- B: const 修饰指针,则指针为不可变量。
int a = 8;
int* const p = &a;
*p = 9; // 正确
int b = 7;
p = &b; // 错误
对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。简称,右定向。因为 const 位于 * 号的右边
- C: const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量
int a = 8;
const int * const p = &a;
const p 的指向的内容和指向的内存地址都已固定,不可改变
2.3 修饰类成员函数