此篇介绍 C++ 中的 mutable
关键字。
类中的 mutable
mutable
从字面意思上来说,是「可变的」之意。
若是要「顾名思义」,那么这个关键词的含义就有些意思了。显然,「可变的」只能用来形容变量,而不可能是「函数」或者「类」本身。然而,既然是「变量」,那么它本来就是可变的,也没有必要使用 mutable
来修饰。那么,mutable
就只能用来形容某种不变的东西了。
C++ 中,不可变的变量,称之为常量,使用 const
来修饰。然而,若是 const mutable
联用,未免让人摸不着头脑——到底是可变还是不可变呢?
事实上,mutable
是用来修饰一个 const
示例的部分可变的数据成员的。如果要说得更清晰一点,就是说 mutable
的出现,将 C++ 中的 const
的概念分成了两种。
- 二进制层面的
const
,也就是「绝对的」常量,在任何情况下都不可修改(除非用const_cast
)。 - 引入
mutable
之后,C++ 可以有逻辑层面的const
,也就是对一个常量实例来说,从外部观察,它是常量而不可修改;但