有如下程序: #include<iostream> using namespace std; class ONE { public: virtual void f(){cout<<"1";} }

admin2013-02-27  16

问题 有如下程序:
   #include<iostream>
   using namespace std;
   class ONE
   {
       public:
         virtual void f(){cout<<"1";}
   };
   class TWO:public ONE
   {
       public:
         TWO(){cout<<"2";}
   };
   class THREE:public TWO
   {
       public:
         vurtual void f() {TOW::f();cout<<"3";}
   };
   int main()
   {
         ONE aa,*p;
         TWO bb;
         THREE cc;
         p=&cc;
         p->f();
         return 0;
   }
   执行该程序的输出结果是______。

选项

答案2213

解析 此题考查的是派生类的构造和析构函数。建立TWO的对象bb时,调用TWO的构造函数,输出“2”:THREE类又派生于TWO类,所以建立THREE类的对象cc时,又会输出“2”;ONE类的对象指针p又指向了THREE类的ONE类的虚函数f(),输出“1”;最后调用THREE类的f(),输出“3”。故最终的输出结果是2213。
转载请注明原文地址:https://kaotiyun.com/show/IOVp777K
0

最新回复(0)