常量变量初始化仅与成员初始化列表一起工作

Constant variable initializing working only with member initialization list

本文关键字:初始化 列表 一起 成员 工作 变量 常量      更新时间:2023-10-16

考虑代码段

 class Test{
  const int i;
  public:
 // Test(int x):i(x){} This works
  Test(int x){
      i=x;
  } //this doesn't work

为什么内联成员初始化列表在正常初始化不起作用时起作用?

请注意,i=x;是一个分配。如果您不通过成员Intializer列表初始化它,则将尝试使用默认的i,然后在构造函数的正文中分配。

但是,作为const变量,i不能被默认化(或分配)。因此,必须在成员Intializer列表中指定其初始化。

成员初始化列表是可以指定这些对象的非默认初始化的地方。对于不能默认限制的成员,例如参考成员和constemified类型,必须指定成员初始化器。