🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一.cv限定符 1. 指 `const` `volatile` `const volatile` 限定符。 2. `const` **限定符** 变量初始化后,其值不可改变。 3. `volatile` **限定符** 表示变量可能在程序之外发生改变。 ## 二.顶层const 1. **顶层 `const`** 对象本身是否为常量。 2. **底层`const`** 对象指向的对象是否为常量。 3. **拷贝操作中的`const`** + 顶层`const` 无影响。因为拷贝操作并不会改变被拷贝对象的值。 + 底层`const` 有影响。拷入和拷出的对象必须具有相同的底层 `const` 资格,或者两个对象的数据类型必须能够转换。一般来说,非常量可以转换成常量,反之则不行。 ```c++ int i = 2020; int *const p1 = &i;//ok,顶层const无影响 int *p2 = p1;//ok,顶层const无影响 int *const p3 = p2;//ok,顶层const无影响 const int *p4 = p2;//ok,非常量可以转换成常量 int *p5 = p4;//wrong,常量不可以转换成非常量 ``` ## 三.const 型数据小结 | 形式 (T为数据类型) | 含义 | 详见章节 | | ---------------------- | ------------------------------------------------------------ | ---------------------------------- | | `const T ct` | `ct` 为 **常对象** ,若 `T` 为指针类型,则 `ct` 为 **指针常量** 。 | C++基础.数据类型.处理类型.类型别名 | | `T const ct` | `ct` 为 **常对象** ,若 `T` 为指针类型,则 `ct` 为 **指针常量** 。 | C++基础.数据类型.处理类型.类型别名 | | `const T* pct` | `pct` 为指向 **常对象** 的 **指针** 。 | C++基础.数据类型.指针 | | `T const* pct` | `pct` 为指向 **常对象** 的 **指针** 。 | C++基础.数据类型.指针 | | `T * const cpt` | `cpt` 为指向 **对象** 的 **指针常量** 。 | C++基础.数据类型.指针 | | `const T * const cpct` | `cpct` 为指向 **常对象** 的 **指针常量** 。 | C++基础.数据类型.指针 | | `void T::f() const;` | `f` 为 **常成员函数** 。 | 面向对象编程.成员.const |