若有以下程序: #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
参考答案:C
解析: 本题考核派生类的定义和访问权限。本题涉及多层次的继承关系。类B是类A的派生类,类C又是类B的派生类。类C中的构造函数调用了类B的构造函数来初始化类B的私有数据成员,而类B的构造函数又调用了类A的构造函数来初始化类A的私有数据成员。由此可知,程序最后的输出为3,4。