问题 单项选择题

若有以下程序:
#include <iost ream>
using namespace std;
class A

private:
int a;
public:
A(int i)

a=i;

void disp ()

cout<<a<<", ";

;
class B

private:
int b;
public:
B(int j)

b=j;

void disp ()

cout<<b<< ",";
;
class C : public B,public A

private:
int c;
public:
C(int k) :A(k-2),B(k+2)

c=k;

void disp()

A: :disp ();
B::disp();
cout<<c<<end1;

;
int main ()

C obj (10);
obj.disp();
return 0;

程序执行后的输出结果是

A.10,10,10

B.10,12,14

C.8,10,12

D.8,12,10

答案

参考答案:D

解析: 本题考核派生类构造函数的使用。本题中,派生C具有多重继承关系,所以在派生类C的构造函数中应该包含基类A和B的成员初始化列表。而且派生类 C中的成员函数disp分别调用了基类A、B的公有成员函数disp()用于输出基类中私有数据变量初始化后的值。所以由类C构造函数的初始化形式可知,程序最后输出为8,12,10,即D选项。

选择题
单项选择题