以下程序的执行结果为【 】。 #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( )时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。