c++11 - 类内初始化器到底是什么?

标签 c++11 in-class-initialization

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

最佳答案

这是一个类内初始化的简单示例。它对于减少输入非常有用,尤其是当多个构造函数签名可用时。推荐在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 zero initialization
};

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

关于c++11 - 类内初始化器到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53100271/

相关文章:

c++ - 检索类内初始化成员的默认值

c++ - 声明模板的共享指针

c++ - C++ 中的类模板和友元

c++ - 模板类是怎么匹配的

c++ - 将标准元组解包为指针?

c++ - 具有大小的 vector 的类内初始化

c++ - 唯一指针类内初始化

c++ - 从相同类型的静态成员进行类内初始化

c++ - 前向声明、unique_ptr 和类内初始化器

c++ - 在 fstream/ifstream 文件中使用多个函数?