类内初始化器到底是什么?

时间:2018-11-01 11:22:23

标签: c++11 in-class-initialization

我读了很多关于类初始化的文章,我搜索了很多关于stackoverflow的问题,但是我没有找到关于什么是类初始化的确切解释。据我了解,任何函数外部声明的内置类型的变量将由编译器默认初始化,类内初始化器是否对声明的变量执行相同的操作?

1 个答案:

答案 0 :(得分:1)

这是类内初始化的简单示例。这对于减少类型输入很有用,尤其是在有多个构造函数签名可用时。也建议在core guidelines中使用。

class Foo {
  public:
    Foo() = default; // No need to initialize data members in the initializer list.
    Foo(bool) { /* Do stuff here. */ } // Again, data member already have values. 

  private:
    int bar = 42; 
    //      ^^^^ in-class initialization
    int baz{};
    //     ^^ same, but requests default initialization
};

由于数据成员已显式初始化,因此问题的第二部分实际上不适用于类内初始化。