若有以下程序: #include<iostream> using namespace std; class A { private: int a; public:void seta(int x){ a=x;}void showa(){ cout<<a<<",";} }; class B { private: int b; public: void setb(int x) {b=x; } void showb() {cout<<b<<",”; } }; class C:pUblic A,private B { private: int c; public:void setc(int x,int y,int z) {c=z;seta(x);setb(y); } void showc() {showa();showb();cout<<c<<end1; } }; int main() { Cc; c.setc(1,2,3); c.showc(); retrun 0; } 程序执行后的输出结果是
A.1,2,3
B.1,1,1
C.2,2,2
D.3,3,3
参考答案:A
解析: 本题考核派生类的应用。本题中类A和类B都是基类。而类C从类A公有派生,从类B处私有派生。所以类C中的函数成员可以访问类A和类B中的公有成员。在类C的函数成员setc中,调用基类A的函数成员seta对A的数据成员a赋值,还调用了基类B的函数成员setb对类B的数据成员b赋值,然后对类C自己的数据成员c赋值。在类C的函数成员showc中,调用基类A的函数成员showa显示数据成员a的值,还调用基类B的函数成员showb显示数据成员b的值,然后输出类C自己的数据成员c的值。在主函数main中,先定义派生类的对象c,然后调用setc对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。