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

admin2013-05-30  40

问题 若有以下程序:    #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

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

最新回复(0)