下面程序的输出结果是【 】。 #include <iostream> using namespace std; class base { protected: int a; public: base

admin2010-12-16  65

问题 下面程序的输出结果是【  】。
#include <iostream>
   using namespace std;
   class base
   {
   protected:
       int a;
   public:
      base(){cout<<"0":}
   };
   class basel: 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;
   }

选项

答案0123

解析 本题考核含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最有调用派生类自己的构造函数.题中先调用base的构造函数,然后调用base1、base2的构造函数,最后调用derived的构造函数。
转载请注明原文地址:https://jikaoti.com/ti/JZL0FFFM
0

最新回复(0)