const是C++中编译期强制的数据不可变性机制,用于防误改、提可读性、助优化;必须初始化,支持常量指针、const参数传递、const成员函数及mutable例外。

const 是 C++ 中保障数据不可变性的核心机制,不是“只读标签”,而是编译期强制约束。用对了能防误改、提升可读性、辅助优化;用错了可能绕过检查、引发未定义行为,或让接口语义模糊。
定义常量变量必须初始化
所有 const 变量(局部、全局、成员)都必须在声明时初始化,否则编译失败。
- 基本写法灵活:const int x = 42; 和 int const y = 100; 等价,类型与 const 顺序可互换
- 整型 const 全局变量默认内部链接:只在当前文件可见;跨文件使用需加 extern const int MAX = 100;
- C++11 起支持运行时常量:const int size = some_func(); 合法(前提是 some_func() 是 constexpr 或已知返回值)
- 数组大小可用 const 整型:const int N = 8; int arr[N]; ✅(C++11 及以后)
const 指针的三种关键形式
记住口诀:const 在 * 左边 → 指向的内容不可改;在 * 右边 → 指针本身不可改。
-
指向常量的指针:const int* p 或 int const* p
→ *p 不能改(如 p[0] = 5; 错误),但 p 可重定向(p = &y; ✅) -
常量指针:int* const p = &x;
→ p 不能改(p = &y; 错误),但 *p 可改(*p = 99; ✅) -
指向常量的常量指针:const int* const p = &x;
→ *p 和 p 都不可改,二者完全冻结
函数参数中 const 的实用价值
主要目的是明确接口契约:告诉调用者“我不会动你的数据”,也提醒自己别写错逻辑。
标签: c++
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~