c++ - 可变变量内存位置

标签 c++ mutable storage-class-specifier

我对 C++ 中的可变变量有以下理解。

  1. 它是一个特殊的存储类。
  2. 可变变量可以被常量对象修改。
  3. 您想要使用可变变量的情况的一个例子是您不想执行昂贵的操作来获得结果,除非特别要求。如果特别要求,您的程序将执行一次操作并将结果缓存在可变变量中。

我的问题是关于内存的。编译器会将可变变量存储在内存中的什么位置?既然是可修改的,那么肯定不是“只读”内存。

最佳答案

mutable ( mutable ) 只是编译器的类型限定符,如 constvolatile。 类的成员存储在连续的内存块中(静态成员除外)。如果您将成员定义为const,并不意味着编译器会将其放入RO 内存中。 const 声明在运行时不会产生任何影响,它只是编译器在编译期间执行适当检查和优化的关键字。 一旦将类(或方法)定义为 const 但您仍然需要修改该类的特定成员(如互斥体或您提到的那样 - 缓存值),您就让编译器知道这个特定的成员是可变的,否则你会得到一个编译错误。

关于c++ - 可变变量内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032044/

相关文章:

c++ - 从主线程 C++ 更新信号量

C++ ofstream浮点编码

rust - 为什么没有为包装 FnMut 的 `std::cell::RefMut<' _, [..]>` 实现 DerefMut?

c++ - 为什么可变说明符被分类为存储类说明符,而不是限定符?

c - 为什么这是一个非法的常量表达式?

c++ - 获取 HDF5 ArrayType 中的数据类型

c++ - 为 std::set 重载运算符 <

class - 如何让一个元组给出一个随机的新元组?

python - 我如何着手模拟 Python 中的按引用传递的等价物?

c - 默认全局变量的存储类(gcc 编译器)?