在下面一段类定义程序中,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。