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

admin2010-12-16  33

问题 若有以下程序:    #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, inc y, int z)       {          c=z;          seta (x);          setb (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

答案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。
转载请注明原文地址:https://kaotiyun.com/show/VOjp777K
0

最新回复(0)