问题 单项选择题

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

单项选择题
判断题