单选题 若有以下程序:
#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。