我对 volatile 和 mutable 之间的区别有疑问。我注意到这两者都意味着它可以改变。还有什么?它们是一样的吗?有什么不同?它们适用于什么地方?为什么提出这两个想法?如何以不同的方式使用它们?
非常感谢。
最佳答案
即使在通过 const
指针或引用访问的对象中,或在 const
对象中,也可以更改 mutable
字段,因此编译器知道不将其存储在 R/O 内存中。 volatile
位置是可以由编译器不知道的代码(例如某些内核级驱动程序)更改的位置,因此编译器知道不进行优化,例如在该值“不可能改变”的无效假设下对该值的寄存器分配,因为它最后一次加载到该寄存器中。向编译器提供非常不同类型的信息以阻止非常不同类型的无效优化。
关于c++ - C++ 中的 volatile 与 mutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444695/