in-class-initializer 究竟是什么?
What exactly is the in-class-initializer?
我读过很多提到 in-class-initializer 的文字,并且我在 Whosebug 上搜索了很多问题,但是我没有找到任何关于 in-[=13 是什么的精确解释=]-初始化程序。据我所知,在任何函数外声明的内置类型变量将由编译器默认初始化,in-class-initilizer 是否对声明的变量执行相同的操作?
这里有一个简单的in-class初始化例子。它对于减少输入非常有用,尤其是当有多个构造函数签名可用时。 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
};
由于数据成员是显式初始化的,您问题的第二部分并不真正适用于 in-class 初始化。
我读过很多提到 in-class-initializer 的文字,并且我在 Whosebug 上搜索了很多问题,但是我没有找到任何关于 in-[=13 是什么的精确解释=]-初始化程序。据我所知,在任何函数外声明的内置类型变量将由编译器默认初始化,in-class-initilizer 是否对声明的变量执行相同的操作?
这里有一个简单的in-class初始化例子。它对于减少输入非常有用,尤其是当有多个构造函数签名可用时。 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
};
由于数据成员是显式初始化的,您问题的第二部分并不真正适用于 in-class 初始化。