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/