问题 单项选择题

下面程序的运行结果是(  )。   #include   classbase{   protected:   inta;   public:   base(){cout<<"0";}   };   classbasel:virtualbase{   public:   basel(){cout<<"1";}   };   classbase2:virtualbase{   public:   base2(){cout<<"2";}   };   classderived:publicbasel,publicbase2{   public:   derived(){cout<<"3";}   };   voidmain()   {   derivedobj;   eout<  }

A.0123

B.3120

C.O312

D.3012

答案

参考答案:A

解析:【解析】本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

问答题
选择题