若有以下程序: #include<iostream> usingnamespacestd; classA { private: int x; public: int x; void set

admin2010-03-29  28

问题 若有以下程序:    #include<iostream>    usingnamespacestd;    classA    {    private:      int x;     public:      int x;      void setx(int i)      {      x=i;      }      int getx()      {        return x;      }    };    class B:public A     {    private:      int m;    public:      int p;      void setvalue (int a,int b,int C)    {      setx(A) ;       z=b;       m=c;    }    void display()      {      cout<<getx()<<","<<z<<","<<m<<end1;      }    };    int main()    {      B obj;      obj.setvalue(2,3,4);      obj.display();      return 0;    }    程序运行以后的输出结果是

选项 A、产生语法错误
B、2,3,4
C、2,2,2
D、4,3,2

答案2

解析 本题考核继承与派生。当类的继承方式为公有继承时,基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承宋的公有成员。在本题中,数据成员z和函数setx都是基类A的公有成员,它们经过公有继承以后,在派生类B中还是公有成员,而派生类B中的函数setvalue 和 display 都是公有成员,可以通过对象对它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是输出已设置的各成员的值。
转载请注明原文地址:https://jikaoti.com/ti/QGW0FFFM
0

最新回复(0)