C ++ const数据初始化

时间:2014-10-01 07:31:31

标签: c++ const

在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...

1 个答案:

答案 0 :(得分:2)

  

在C ++中const是在编译时还是在运行时计算?

这取决于。如果它是非成员变量,由常量表达式初始化,则该值可由编译器指定。如果它是非静态类成员,或者在编译时使用未知的值进行初始化,则必须在运行时初始化它。

  

为什么我可以在运行时分配值?

你做不到。您可以使用运行时值初始化它,但在初始化后无法分配新值。这就是const的含义。