问题
单项选择题
有如下程序: #include <iostream.h> 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
解析: 本题程序中引入了虚基类。在主函数main中,执行语句“y obj;”时,先执行虚基类x的构造函数,使a=1;然后执行类x1的构造函数,使a=2,并输出值 2;再执行类x2的构造函数,使a=4,并输出值4;最后执行类y的构造函数,输出值4。