若有以下程序: #include <iostream> using namespace std; class data { public: int x; data (int x) {

admin2010-03-29  26

问题 若有以下程序:    #include <iostream>    using namespace std;    class data    {    public:       int x;       data (int x)       {          data: :x=x;       }    };    class A    {    private:       data d1;    public:       A(int x)  : d1 (x) { }       void dispa()       {          cout<<d1, x<<", ";       }    };    class B: public A    {    private:       data d2;    public:       B(int x)  : A(x-1),d2(x) {}       void dispb()       {          cout<<d2.x<<end1;       }    };    class C : public B    {    public:       C(int x)  :  B(x-1){}       void disp ()       {          dispa ( );          dispb ();       }    };    int main ( )    {       C obj (5);       obj.disp();       return 0;    }    程序执行后的输出结果是(   )。

选项 A、5,5
B、4,5
C、3,4
D、4,3

答案4

解析 本题考核派生类的定义和访问权限。本题涉及多层次的继承关系。类B是类A的派生类,类C又是类B的派生类。类C中的构造函数调用了类B的构造函数来初始化类B的私有数据成员,而类B的构造函数又调用了类A的构造函数来初始化类A的私有数据成员。由此可知,程序最后的输出为3,4。
转载请注明原文地址:https://kaotiyun.com/show/BWjp777K
0

最新回复(0)