c++ - "const"只是意味着只读还是更多?

标签 c++ c constants

const 的真正含义是什么?只读对我来说似乎封装了它的含义,但是,我不确定我是对的。

如果只读和 const 不同,谁能告诉我为什么?

提出这个问题的原因是 this answer他说 const “just” 在 C 中意味着只读。我认为这是 all const 的意思,无论它是 C 还是 C++ .他是什么意思?

为了回答 C 与 C++ 中 const 的具体差异,我创建了一个新问题:How does "const" differ in C and C++?根据 R.. 的建议。

最佳答案

通过将变量声明为 const,您表明编译器您无意修改该变量。但这并不意味着其他人没有!它只是为了允许一些优化并通过编译错误得到通知(注意,它主要是编译错误,而 const == ReadOnly 意味着运行时错误)。

const不代表只读,因为你可以写const volatile,也就是说可以随时自行改变,但我无意修改它。

编辑:这是一个经典示例:考虑我正在编写从内存映射端口读取当前时间的代码。考虑 RTC 映射到内存 DWORD 0x1234。

const volatile DWORD* now = (DWORD*)0x1234;

它是 const 因为它是一个只读端口,它是 volatile 因为我每次阅读它都会改变它。

还请注意,许多架构有效地将声明为 const 的全局变量设为只读,因为修改它们是 UB。在这些情况下,UB 将表现为运行时错误。在其他情况下,这将是一个真正的 UB :)

这是一个很好的阅读:http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html

关于c++ - "const"只是意味着只读还是更多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486326/

相关文章:

c++ - 使用三元运算符初始化引用变量?

c - 数组的基址

C implicit extern for global variable,什么时候发生,它是如何工作的

Swift:私有(private)常量与常量类型属性

c++ - 是否在类外重新声明一个 const 静态变量

c++ - 将多维数组 vector 中单个项目的指针传递给函数c++

c++ - OpenGL 索引缓冲生成正方形

c++ - C++中用户定义类的大小

c - 程序存储空间被覆盖

在 C 中连接两个 const char *