在C ++中'const'是在编译时还是在运行时计算? 为什么我可以在运行时分配值?
class A{
public:
const int a;
A():a{100}{ // if const's need compile-time evaluate why we can do this
}
};
主:
A* a = new A(); // const do no assign(or initialization?) until run-time...
答案 0 :(得分:2)
在C ++中
const
是在编译时还是在运行时计算?
这取决于。如果它是非成员变量,由常量表达式初始化,则该值可由编译器指定。如果它是非静态类成员,或者在编译时使用未知的值进行初始化,则必须在运行时初始化它。
为什么我可以在运行时分配值?
你做不到。您可以使用运行时值初始化它,但在初始化后无法分配新值。这就是const
的含义。