包含已声明但未初始化的项目的初始化列表

Cai*_*mes 3 c++ initialization list-initialization

当我没有初始化所有项目时,我有一个关于初始化列表的问题。

假设我有以下代码:

class Example {
  int a, b, c;

  Example() : a(1), b(2), c(3) {}
}
Run Code Online (Sandbox Code Playgroud)

我知道成员初始化的顺序是由它们的声明顺序定义的,而不是由它们在初始化列表中列出的顺序定义的,但是,如果我在初始化列表中没有b,就像在下列的?

class Example {
  int a, b, c;

  Example() : a(1), c(2) {}
}
Run Code Online (Sandbox Code Playgroud)

a会被初始化为1b会被初始化为未定义的值,c会被初始化为3吗?因为我没有严格按照我声明的顺序调用初始化列表,所以我会得到未定义的行为吗?或者这些都没有?

我问这个问题是因为我有一个包含大量数据的类,我想确保其中一些数据具有初始值,但我不需要初始化所有数据。

Swo*_*ish 5

不初始化初始化列表中的成员不会导致未定义的行为。阅读它是未定义的行为。未初始化的int将被默认初始化,这使其处于不确定状态。