执行这个程序的输出结果是( ); #include<iostream> using namespace std; class TestClass1 { public: void fun1(){cout<<"

admin2013-02-27  15

问题 执行这个程序的输出结果是(    );
   #include<iostream>
   using namespace std;
   class TestClass1
   {
       public:
   void fun1(){cout<<"TestClass1\n";}
   virtual void fun2(){cout<<"TestClass1\n";}
   };
   class TestClass2:public TestClass1
   {
       public:
   void fun1(){cout<<"TestClass2\n";}
   void fun2(){cout<<"TestClass2\n";}
   };
   void f(TestClass1&b){b.fun1();b.fun2();}
   int main()
   {
   TestClass2 obj;
   f(obj);
   return 0;
   }

选项

答案TestClass1 TcstClass2

解析 主函数中首先定义TestClass2对象obj,然后执行“f(obj);”。“void f(TestClass1& b){b.fun1();b.fun2();}”语句中fun中参数为TestClass1类型的对象b,其中调用fun1()和fun2()。基类 TestClass1中的fun2()为虚函数,所以派生类中的fun2也是虚函数,所以输出为调用TestClass1中的fun1,TestClass2中的fun2。即结果为TestClass1和TestClass2。
转载请注明原文地址:https://jikaoti.com/ti/EvE0FFFM
0

最新回复(0)