填空题 下面程序的输出结果是{{U}} 【15】 {{/U}}。 #include<iostream> using namespace std; class base { protected: int a; public: base(){cout<<"0":} }; class base1:virtual public base { public: base1(){cout<<"1";} }; class base2:virtual public base { public base2(){cout<<"2"; }; class derived:public base1,public base2 { public: derived(){cout<<"3";} } int main() { derived obj; cout<<end1; return 0; }
  • 1、
【正确答案】 1、0123    
【答案解析】[解析] 本题考核含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最有调用派生类自己的构造函数。题中先调用base的构造函数,然后调用base1、base2的构造函数,最后调用derived的构造函数。