有以下程序: #include <iostream> using namespace std; class Base { public: Base(){} virtual void who()

admin2010-03-29  25

问题 有以下程序:    #include <iostream>    using namespace std;    class Base    {    public:        Base(){}        virtual void who()        {             cout<<"Base Class"<<end1;        }        ~Base(){}    };    class Derivel  : public Base    {    public:       void who()       {           cout<<"Derivel  Class"<<end1;       }    };    class Derive2  : public Base    {    public:          void who ()         {             cout<<"Derive2 Class"<<end1;         }      };      int main ()      {            Base *p;            Derivel obj1;            Derive2 obj2;            p=&obj1;            p=&obj2;            p->who ( );            return 0;      }      执行程序后的输出结果是(   )。

选项 A、Base Class
B、Derivel Class
C、Derive2 Class
D、程序编译时出错

答案4

解析 本题考核虚函数的应用。本题中,先定义了一个基类Base,它含有一个虚成员函数who(),随后定义的类Derivel和Derive2都是基类Base的公有派生类。在主函数中定义了一个指向Base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指向的对象,p->who就能调用不同的函数实现。这是因为使用了虚函数,因而进行动态联编。 程序最后把指针p指向派生类Derive2的对象,由于函数who()在基类Base中是虚函数,所以系统调用Derive2中的who()函数,最后输出Derive2Class。
转载请注明原文地址:https://kaotiyun.com/show/8Xjp777K
0

最新回复(0)