若有以下程序: #include 〈iostream〉 using namespace std; class A { private: int x; public: int z; vo

admin2010-03-29  71

问题 若有以下程序:    #include 〈iostream〉    using namespace std;    class A    {    private:       int x;    public:       int z;       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://kaotiyun.com/show/7xjp777K
0

随机试题
最新回复(0)