【发布时间】:2021-04-14 08:22:06
【问题描述】:
C++为什么编译时变量是不可变的??
我不知道为什么编译时变量(constexpr)是不可变的?? 我认为 const 变量很有价值。 因为它会阻止开发人员错误地更改值
但为什么 constexpr 强制 const 和编译时评估。 我认为应该有非常量和编译时间评估变量。 但是没有
我认为编译时间变量可以更改。 访问变量内存和修改看起来不是不可能的。
但为什么我不能更改编译时评估变量??
编译时变量没有存储在内存中??
【问题讨论】:
-
也许澄清一下,你想写什么代码但不能写?
-
值得注意的是,虽然
constinit存在于C++20中,但它只能应用于静态和线程局部对象。它的主要目的是防止静态初始化命令的失败,而不是提供一个“编译时常量但可变”的变量。后一个概念没那么有用,但如果你真的需要它,可以通过制作constexpr变量的非const副本来模拟它。
标签: c++