const关键字
const关键字
修饰对象
const T x:对象只读,初始化后不能改。
const T obj:智能调用const成员函数
T* p:指向 T 的指针。
const T* p / T const* p:指向 const T 的指针(不能改 指向对象;可改指针指向)。
T* const p:const 指针(指针自身不可改;能改 指向对象)。
const T* const p:指针自身不可改,且指向 const 对象。
引用本身不可改;const T& r = 指向 只读别名。
成员函数后的const
T::f()const把隐藏的 this 变为 T const*:不能改非 mutable 成员;只能调 const 成员函数。
static 成员函数不能写 ...() const(没有 this)
mutable 修饰非静态成员变量,允许在 const 成员函数里修改(缓存、计数、互斥锁等“逻辑只读”数据)。
auto 会去掉顶层 const/引用:
1 | const int& r = n; auto x = r; // x 是 int |
需要保留引用/const 属性时用 decltype(auto):
1 | int& f(); auto a = f(); // a 是 int(拷贝) |