导入
常量
本课程将解释 const 关键字的作用。
定义
const 关键字会影响变量的行为。使用 const 关键字初始化的变量之后不能再被修改,它是“常量”。
1const int i = 10; 2i = 20; // 错误:无法修改常量变量
使用 const 声明的变量或类的属性必须始终被初始化。
类的方法也可以是 const 的,它们可以由常量和非常量的类实例调用。
指针
指针本身以及其所指向的数据都可以是 const。
type const* / const type*
这种声明表示所指向的值是 const,不能被修改。但指针本身不是 const:
1int i = 2011; 2int const* ip = &i; 3*ip = 2012; // 错误 4 5int j = 2012; 6ip = &j;
type* const
在这种情况下,指针是常量,其在整个生命周期内不能指向另一个地址。
1int i = 2011; 2int j = 2012; 3int* const p = &i; 4p = &j; // 错误 5 6*p = 2015;
const type* const
此时,指针和所指向的值都是常量。
1int i = 100, j = 200; 2const int* const p = &i; 3*p = i; // 错误 4p = &j; // 错误
语句 const int* const p 应从右往左阅读:p 是一个常量指针,* const 指向一个 const int 类型的值。我们可以直接修改 i,但不能通过 p 来修改它。
1#include <iostream> 2using namespace std; 3 4int main() { 5 int i = 100, j = 200; 6 const int* const p = &i; 7 *p = i; // 错误 8 p = &j; // 错误 9}