Koarz #include <iostream> struct A{ int a; A(int a) : a(a){} }; struct B { A a; int b; B(int v) : b(v), a(b) {} }; int main() { B b{10}; std::cout << b.a.a << ' ' << b.b; return 0; } 这段代码输出什么?为什么?
Koarz ygxdsh 类(包括class)的初始化顺序是根据数据在类中本身的顺序来的, 所以无论构造函数怎么写都一定先初始化a再初始化b, 这里一开始调用的是a(b)但是b并未初始化,所以程序是有错误的, 这里类型比较简单所以没有直接报错, 遇到更复杂的情况可能会导致编译错误