我最近意识到我的C ++代码中包含以下内容,并且它可以编译并运行而没有任何问题。
void MyClass::foo(int a) {
const double x = a;
...
//do stuff with x
...
}
我的问题:我以为const变量在编译时分配了一个值,这会给我一个编译错误,尽管在这种情况下,显然是在运行时分配的。这里的const说明符会被忽略吗?还是还有其他更复杂的事情?我应该删除const说明符吗?
常量变量在初始化时(在运行时)分配了一个值,以后不能修改。指向常量变量的引用和指针只能用于从这些变量中读取,基础变量是否为常量。
我以为const变量在编译时分配了一个值
您所描述的是C ++ 11 constexpr
变量。