以下程序的执行结果为【 】。 #include<iostream> using namespace std; class base { public: virtual void who()

admin2010-03-29  42

问题 以下程序的执行结果为【  】。
   #include<iostream>
   using namespace std;
   class base
   {
      public:
           virtual void who()
      {
         cout<<"base class"<<endl;
      }
   };
   class derivel:public base
   {
      public:
         void who()
      {
   cout<<"derivel class"<<endl;
   }
    };
   class derive2:public base
   {
      public:
          void who()
      {
          cout<<"derive2 class"<<endl;
      }
   };
   void main()
   {
      base obj1,*p;
      derivel obj2;
      derive2 obj3;
      p=&objl;
      p->who();
      p=&obj2;
      p->who();
      p=&obj3;
      p->who();
   }

选项

答案base class derivel class derive2 class

解析 类base含有虚函数who(),该类派生出derivel类和derive2类,两个派生类中都有虚函数 who()的定义。在main()函数中定义了一个指向base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当p->who()时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。注意:应掌握静态联编的使用方法。
转载请注明原文地址:https://kaotiyun.com/show/13jp777K
0

最新回复(0)