这段代码的结果为啥是001呢?

#include <iostream> using namespace std; class Base{
public:
Base(int x=0) {cout<<x;}
};
class Derived : public Base{
public:
Derived(int x=0) {cout<<x;}
private:
Base val;
};
int main(){
Derived d(1);
return 0;
}

Derived 创建时:
(1)成员变量 Base val 先初始化,执行父类的构造函数,输出默认值 x=0
(2)子类继承Base,执行自己构造函数之前,要先执行 父类Base 的构造函数【隐含调用】 ,又一次输出默认值x=0
(3)最后时 子类构造函数执行,输出 自己main函数中 赋值的 1