c++ - C ++“const”关键字有什么意义?
问题描述
使用关键字有什么意义const
?例如,在制作游戏时,首先要做的事情之一就是设置它的宽度和高度。大多数时候你会使用例如:
const int Width
和
const int height
现在我知道你应该这样做,因为屏幕的宽度和高度在整个游戏过程中不会改变,但这样做有什么意义呢?你可以在不使用 const 的情况下做同样的事情,它会工作得很好。
那只是一个例子。所以我现在很困惑的是:
const
如果您无论如何都不更改变量,那么在任何地方使用关键字有什么意义?
解决方案
非详尽的原因列表:
软件工程(SWE)。SWE 不仅仅是编程,而是随着时间的推移与其他人一起编程。
const
允许显式表达一个不变量,这让您和其他人可以对代码进行推理。随着程序变得越来越大,这些不变量不能仅仅记住。这就是为什么用编程语言对它们进行编码会有所帮助。优化机会。
在知道某些值不会改变的情况下,编译器可以进行原本不可能的优化。将其发挥到最大,
constexpr
意味着将在编译时知道一个值,而不仅仅是在运行时。这在潜在的多线程上下文中变得更加重要。我省略了整个程序分析,这需要更长的答案,而且几乎可以肯定不适用于通用 C++ 程序。但是整个程序分析将允许分析器或编译器在变量在函数、翻译单元和库之间传递时推理变量的常量性。
推荐阅读
- c++ - 如何放弃或取消 std::thread
- node.js - Arduino和nodejs脚本之间的通信出现未知错误
- c# - 使用 ToList() 将 SQL 查询转换为 LINQ
- reactjs - 在 Gatsby 中将 HTTP 流量重定向到 HTTPS
- python - 如何在某些坐标上将多个图像叠加到基础图像上?
- python - 为什么我的 for 循环会覆盖我以前在字典中的值?(python3)
- java - 控制台只显示文件的文件名和内容,而不是只显示内容
- macos - 反复用透明黑色绘制的褪色图形在莫哈韦停止工作
- caching - 主屏幕添加 (A2H) 是否曾经是浏览器在存储空间不足时推迟 PWA 缓存清除的信号?
- python - 使用 matplotlib LineCollection,不显示特定坐标的线