我对 C++ 中的可变变量有以下理解。
- 它是一个特殊的存储类。
- 可变变量可以被常量对象修改。
- 您想要使用可变变量的情况的一个例子是您不想执行昂贵的操作来获得结果,除非特别要求。如果特别要求,您的程序将执行一次操作并将结果缓存在可变变量中。
我的问题是关于内存的。编译器会将可变变量存储在内存中的什么位置?既然是可修改的,那么肯定不是“只读”内存。
最佳答案
mutable
( mutable ) 只是编译器的类型限定符,如 const
或 volatile
。
类的成员存储在连续的内存块中(静态成员除外)。如果您将成员定义为const
,并不意味着编译器会将其放入RO 内存中。 const
声明在运行时不会产生任何影响,它只是编译器在编译期间执行适当检查和优化的关键字。
一旦将类(或方法)定义为 const
但您仍然需要修改该类的特定成员(如互斥体或您提到的那样 - 缓存值),您就让编译器知道这个特定的成员是可变的
,否则你会得到一个编译错误。
关于c++ - 可变变量内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032044/