以下程序的执行结果为______。
#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;
derive1 obj2;
derive2 obj3;
p=&obj1;
p->who();
p=&obj2;
p->who();
p=&obj3;
p->who();
}
参考答案:base class
derivel class
derive2 class
解析:[命题目的] 考查虚函数的用法。
[解题要点] 类base含有虚函数who(),该类派生出derive1类和derive2类,两个派生类中都有虚函数who()的定义。在main()函数中定义了一个指向base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当p->who()时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。
[考点链接] 应掌握静态联编的使用方法。