const 正确性
更新时间:2026-10-01。const 是一种贯穿接口的契约,半途加入会级联修改。
一、const 成员函数
void f() const; 等价于在常量 this 上操作,承诺不修改(非 mutable)成员;const 对象/引用只能调用 const 成员,从而在编译期防止误改。
二、重载与复用
T& operator[](size_t) 与 const T& operator[](size_t) const 可重载;常用 const 版实现非 const 版(const_cast<T&>(static_cast<const C&>(*this)[i]))避免重复。mutable 留给缓存、懒求值和互斥量。

常见坑
- const 方法里返回非 const 引用破坏封装。
- 顶层
const T* const p两层含义混淆。 - mutable 滥用使 const 失去意义。
小结
总结
const 正确性是一种须自顶向下贯穿接口的契约(半途加入会级联修改):void f() const 的本质是在"指向 const 的 this"上操作、承诺不改非 mutable 成员,const 对象/引用因此只能调 const 成员,从编译期防止误改;可提供 const/非 const 两版重载(如 operator[])并用 const_cast 让非 const 版复用 const 版避免重复,而 mutable 只应留给缓存、懒求值和互斥量这类"逻辑上仍常量"的字段——滥用会让 const 失去意义。