c++ - 运行时分配的函数中的const变量

标签 c++ function constants

我最近意识到我的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/

相关文章:

C++ 将字符串转换为 time_t

Python3 : what are faster, 嵌套函数调用或 if 语句(try/excepts 非常快)

Java:将 Map 作为函数参数传递

java - Java中如何存储和重用一组相关的常量值?

php - 为什么非法常量名称在使用 define() 时不会抛出错误?

c++ - 数组作为模板参数 : stack or heap?

c++ - C++ 中 'x % y != 0' 的机制

c++ - 在 MPI_Reduce 中传递和插入 vector

javascript - 函数中的对象不起作用

c++ - 如何仅针对非常量对象定义一些构造函数?