问题 单项选择题

有如下程序:
#include <iostream>
using namespace std;
class x

protected:
int a;
public:
x() a=1;
;
class x1 : virtual public x

public:
x1()

a+=1;
cout<<a;

;
class x2 : virtual public x

public:
x2 ()

a+=2;
cout<<a;

;
class y : public xl,public x2

public:
y() cout<<a<<end1;
;
int main ()

y obj;
return O;

该程序运行后的输出结果是( )。

A.1

B.123

C.242

D.244

答案

参考答案:D

解析: 本题程序中引入了虚基类。在主函数中,执行语句“y obj;”时,先执行虚基类x的构造函数,使a=1,然后执行类x1的构造函数,使a=2,并输出值2。再执行类x2的构造函数,使a=4,并输出值4。最后执行类y的构造函数,输出值4。

单项选择题
单项选择题