若有以下程序: #include <iostream> using namespace std; class A { private: int a; public: void seta(int x

admin2010-03-29  24

问题 若有以下程序:    #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;          sera (x);          seth (y);       }       void showc()       {          showa();          showb();          cout<<c<<end1;       }    };    int main ()    {       C c;       c.setc(1,2,3);       c.showc();       return 0;    }    程序执行后的输出结果是(   )。

选项 A、1,2,3
B、1,1,1
C、2,2,2
D、3,3,3

答案1

解析 本题考核派生类的应用。本题中类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的值。
   在主函数中,先定义派生类的对象c,然后调用setc()对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。
转载请注明原文地址:https://jikaoti.com/ti/kKW0FFFM
0

最新回复(0)