问题 单项选择题

下面程序的运行结果是( )。  #include<iostream.h>  class base{  protected:    int a;  public:    base( ){cout<<"0";}  };  class basel:virtual base{  public:    basel( ){cout<<"1";}  };  class base2:virtual base{  public:    base2( ){cout<<"2";}  };  class derived:public basel,public base2{  public:    derived( ){cout<<"3";}  };  void main( )  {    derived obj;    cout<<endl;  }

A.123

B.3120

C.312

D.3012

答案

参考答案:A

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

选择题
单项选择题 A1/A2型题