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