在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。
- 修饰变量的时候
修饰内置的类型变量: 此时不能通过变量名改变变量的值,变量是只读的,这就是我们平时说的常量。但是需要注意下面的情况:
在调试到第8行时,显示a的值是20,但是输出的确实10。所以千万不要轻易对 const 变量设法赋值,这会产生意想不到的行为。编译器然后认为 a 的值为一开始定义的 10,我们可以理解为编译器屏蔽了我们通过其他方法对a进行的修改,如果想要编译器不屏蔽这种修改,只需要在const前面加上关键字volatile(可变的),输出结果就会变成20。
修饰指针变量: 1)const 类型* ptr,这时ptr所指的存储单元的内容是不能通过ptr改变(不能阻碍通过其他指向a的指针改变)。
2)类型 * const ptr,这时ptr所指向的单元不能改变,但是可以通过ptr修改单元内的值。
3)const 类型 * const ptr,这时ptr所指的存储单元的内容是不能通过ptr改变且ptr所指向的单元不能改变,但是可以通过ptr修改单元内的值。
特别注意的是,修饰内置的类型变量时,声明的时候就需要赋值,而修饰指针变量的时候,声明可以和复制分开。
- 修饰成员函数
这时候const写在成员函数的后面,作用是声明这个成员函数不会对对象进行更改。
- 返回值和函数参数
const修饰返回值的时候,声明程序不能对得到的返回值进行修改。
const修饰函数参数的时候,声明函数模块内不对参数进行修改。
注意,最后这个写的比较简单,但是理解了上面这里是很容易理解的。