- 修饰变量:定义常量,变量值不可修改
cpp
const int a = 100;
a = 200; // 编译报错,不能修改
- 作用:防止意外修改,增加代码可读性;编译期检查,比 #define 宏更安全(有类型信息)。
- 修饰指针(区分 const int* / int* const )
-
const int* p :指向的内容不可改,指针本身可以改
-
int* const p :指针本身不能改(地址固定),指向内容可以改
- 修饰类的成员函数(const成员函数,C++特有)
cpp
class Test{
public:
void func() const{
// 函数内部,不能修改类的成员变量
}
};
作用:承诺这个成员函数不会修改对象的数据,只能读取成员。const对象只能调用const成员函数。
额外补充:
- 修饰函数形参: void fun(const string &s)
用const引用,避免拷贝,同时保证函数内不会修改传入参数,保护实参。
一句话总结:
const的本质:给编译器承诺,这个东西只读,禁止修改,编译器帮我们做检查。