我知道我们可以为结构体成员设置默认值。例如,我可以为这些成员设置默认值:
struct Foo {
int a = 0;
int b = 1;
int c;
}
假设我有一个成员 c 的另一个构造函数:
struct Foo {
int a = 0;
int b = 1;
int c;
foo(int input_c): c(input_c) {}
}
在这种情况下,当我构建一个Foo时,构造的顺序是什么?如果我执行
Foo(100)
我的理解是a和b都会被默认构造,然后c被赋予了100,这样说是否正确?
------------- 更新 ---------------------
我有些困惑的地方还在于执行顺序。对于默认值,它们是在构造函数之前就已经被执行吗?
例如,我可以修改我的Foo
struct Foo {
int a = 0;
int b = 1;
int c = -1;
foo(int d) {
c += d; // Does c always started with -1?
}
}