在下面一段类定义程序中,Derived类是由直接基类Base 1和Base 2所派生的,Derived类包含两个间接基类Base,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。请完成下面程序。
    class Base{
    protected:
    int x;
    public:
    Base(){x=1;}
    };
    class Base1:     ①    {
    public:
    Basel(){}
    };
    class Base2: public Base{
    public:
    Base2(){}
    };
    class Derived:   ② 
    {
    public:
    Derived(){}
    void Init(int x1, int x2){
    Base1::x=x1, Base2::x=x2;
    }
    void output(){cout<<Base1::x<<"  "<<Base2::x<<endl;}
    };
 
【正确答案】public Base  public Base1, public Base2
【答案解析】 Base1公有继承Base,所以空一维public Base;Derived类是由直接基类Base1和Base2派生的,public Base1,public Base2。