您的位置 首页 > 腾讯云社区

​C++ cv-qualifier---JIFF

C++ cv-qualifier

cv-qualifier 有三种:const and volatile, mutable。

const/volatile 称为 type qualifiers。

它们能与任何 T 组合成三种不同的类型:

const 修饰的 T, 一般形如 const T 或者 T constvolatile 修饰的 Tconst-volatile 修饰的 T

注意 const/volatile 是直接修饰 type 的。

也就是说:int volatile a, b; 表示 a,b 的类型都是 volatile int。而且 int a, volatile b; 是非法的。即 const 和 volatile 一定是直接修饰 type 的,不能修饰变量。

这和指针申明 *,引用申明 &,数组申明 [] 等是完全不同的。

例如 int a, *b, c[10], &d = a; 是合法的。

const 和 volatile 可以同时修饰一个 type,表示一个"每当要读此变量时,都从原始内存地址读取",防止被编译器优化掉。

mutable 用于修饰 (1)non-static (2)class members of (3)non-reference (4)non-const (5)type。注意这一句话里有 5 个条件。

class X { mutable const int* p; OK. 看作 (mutable int) (const*) p; 即 p 并不是一个 const member mutable int* const q; ill-formed. 看作 (int*) (mutable const) q; 即 q 是一个 const member };C++ 中 mutable 是一种 storage-class-specifier, 而不是 type qualifier, 这可能也是为什么它不能和 static 共存.Referencehttps://en.cppreference.com/w/cpp/language/cv ---来自腾讯云社区的---JIFF

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: