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

admin2009-02-15  31

问题 以下程序的执行结果为【  】。
       #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 objl,*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://jikaoti.com/ti/2Md0FFFM
0

最新回复(0)