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