若有以下程序: #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) :dl(X){}void dispa(){ cout<<dl.X<<",";} }; class B:public A { private:data d2; public:B(int x) : A(x-1),d2(x){}void dispb(){ cout<<d2.x<<endl;} }; 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
参考答案:C
解析: 本题考核派生类的定义和访问权限。本题涉及多层次的继承关系。类B是类A的派生类,类C又是类B的派生类。类C中的构造函数调用了类B的构造函数来初始化类B的私有数据成员,而类B的构造函数又调用了类A的构造函数来初始化类A的私有数据成员。由此可知,程序最后的输出为3,4。