阅读下面 C++ 代码,输出结果为()

#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 选项正确。

posted @ 2024-02-18 14:17  萧海~  阅读(8)  评论(0编辑  收藏  举报