C++在运行时分配一个const值?

Cas*_*sey 8 c++ runtime const

我有一个在运行时期间永远不会改变的常量值,但直到运行时才能知道.

有没有办法在不定义常量的情况下声明一个常量(或者作为一个类的成员),并且还可以确定一次(并且只有一次)计算一个计算值; 或者我将不得不诉诸非常规声明并使用编码S&P(ALL_CAPS变量名称,static如果在课堂上声明等)来试图阻止它变化?

澄清:

虽然这些都是很好的答案,但我所拥有的真实情况更为复杂:

该程序有一个主循环,在处理和渲染之间不断运行; 用户可以设置所需的选项,一旦设置它们,它们将永远不会改变,直到程序重新启动.对于在主循环之前可以确定的任何事物设置"初始化"功能,但是在处理阶段期间必须在循环的中间执行依赖于用户交互的值.(目前,我想到了持久的数据存储技术......)

Oli*_*rth 8

像这样的东西?

const int x = calcConstant();
Run Code Online (Sandbox Code Playgroud)

如果它是类成员,那么使用构造函数初始化列表,如Yuushi的答案.


Yuu*_*shi 7

您可以在struct或中定义它class并使用初始化列表:

#include <iostream>

struct has_const_member
{
    const int x;

    has_const_member(int x_)
      : x(x_)
    { }

};

int main()
{
    int foo = 0;
    std::cin >> foo;
    has_const_member h(foo);
    std::cout << h.x << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


Man*_*rse 5

作为静态或函数局部变量:

const int x = calcConstant();
Run Code Online (Sandbox Code Playgroud)

作为班级成员:

struct ConstContainer {
    ConstContainer(int x) : x(x) {}
    const int x;
};
Run Code Online (Sandbox Code Playgroud)