我最近意识到我的C++代码中包含以下内容,并且它可以编译并运行而没有任何问题。
void MyClass::foo(int a) {
const double x = a;
...
//do stuff with x
...
}
我的问题:我以为const变量在编译时分配了一个值,这会给我一个编译错误,尽管在这种情况下,显然是在运行时分配的。这里的const说明符会被忽略吗?还是还有其他更复杂的事情?我应该删除const说明符吗?
最佳答案
Constant variables在初始化时(在运行时)分配了一个值,此后无法修改。指向常量变量的引用和指针只能用于从这些变量中读取,而基础变量是否为常量。
I thought const variables were assigned a value at compile time
您所描述的是C++ 11
constexpr
变量。Should I remove the const specifier?
不。您应该将所有内容都设为
const
,除非您特别需要不要设为const
。
关于c++ - 运行时分配的函数中的const变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60438727/