当我没有初始化所有项目时,我对初始化列表有疑问。
假设我有以下代码:
class Example {
int a, b, c;
Example() : a(1), b(2), c(3) {}
}
我知道成员的初始化顺序是由它们的声明顺序定义的,而不是由它们在初始化列表中列出的顺序定义的,但是,如果我没有 b 在初始化列表中,如下所示?
class Example {
int a, b, c;
Example() : a(1), c(2) {}
}
将 a 初始化为 1,将 b 初始化为未定义的值,将 c 初始化为 3 强>?我是否会因为没有严格按照声明的顺序调用初始化列表而出现未定义的行为?或者这些都不是?
我问这个是因为我有一个包含大量数据的类,我想确保其中一些具有初始值,但我不需要初始化所有数据。
最佳答案
不初始化初始化列表中的成员不会导致未定义的行为。阅读它是未定义的行为。未初始化的 int
将被默认初始化,这使其处于不确定状态。
关于c++ - 包含已声明但未初始化的项目的初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199440/