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