1

我已经阅读了许多提到类内初始化器的文本,并且我在 stackoverflow 上搜索了许多问题,但是我没有找到关于什么是类内初始化器的任何精确解释。据我了解,在任何函数之外声明的内置类型的变量都将由编译器默认初始化,类内初始化程序是否对声明的变量执行相同的操作?

4

1 回答 1

3

这是类内初始化的简单示例。它对于减少输入非常有用,尤其是在有多个构造函数签名可用时。它也在核心指南中被推荐。

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 zero initialization
};

由于数据成员是显式初始化的,因此您问题的第二部分并不真正适用于类内初始化。

于 2018-11-01T11:35:45.187 回答