#include <iostream>
using namespace std;
class base1 {
private: int a, b;
public:
base1(int i) : b(i + 1), a(b) {}
base1():b(0), a(b) {}
int get_a() {
return a;
}
int get_b() {
return b;
}
};
int main() {
base1 obj1(11);
cout << obj1.get_a() << " " << obj1.get_b() << endl;
return 0;
}
官方解析:
初始化列表的初始化顺序按照成员的声明顺序而来。因此 obj(11) 先初始化 a,但 a 的值由 b 决定,b 此时没有初始化,因此为随机值。然后初始化 b 为 12。因此答案为随机值,12。B 选项正确。