问题 填空题

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

答案

参考答案:base classderivel classderive2 class

解析:本题考查虚函数的用法。类base含有虚函数who( ),该类派生出derivel类和derive2类,两个派生类中都有虚函数who( )的定义。在main( )函数中定义了一个指向base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当p->who( )时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。

单项选择题 共用题干题
单项选择题 A3/A4型题