C++ const 与 volatile

标签 c++ constants volatile

<分区>

根据我在网上和 SO 上阅读的内容:

常量:

  • 告诉编译器不得使用以下方式更改变量 程序指令。
  • 因此,编译器可以优化代码。

易变的:

  • 变量是常量,但可以从程序外部更改。
  • 告诉编译器每次都从内存中读取变量的值。
  • 告诉编译器不要对这个变量使用优化。

如果我的理解是正确的,那么volatile就是另一种const。

那么,像下面这样的一行是什么意思?

const volatile char A = 'C';

最佳答案

不,volatile 不是“另一种const”。 volatile 意味着“变量是常量”。

否则,您的观点是准确的。所以,const volatile 意味着:

  1. 程序员不能在初始化后修改对象(这是const部分)
  2. 外部机制可能仍会修改其值,因此每次请求读取时都必须从“内存”中检索,而不是通过优化缓存(这是volatile部分)

关于C++ const 与 volatile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210504/

相关文章:

c++ - 代码块调试器不停止

c++ - 在容器中存储模板化派生类

c++ - 为什么允许在 C++ 中使用指向 const 的指针来释放内存?

c++ - 定义 volatile 类对象

java - 为什么我们应该在 File.toPath() (jdk7) 中使用临时变量

java - 说明 volatile : is this code thread-safe?

c++ - visual studio 2010 c++调试符号已加载但找不到源代码

c++ - 如何在类 .h 文件中使用静态常量来定义数组的长度?

c++ - 具有常量成员的结构体的默认复制操作

c++ - G++ 编译统计