我读过很多提到类内初始化器的文字,并且在 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/