问题 单项选择题

有如下程序:
#include < iostream >
using namespace std;
class Base

public :
void fun1 () cout << " Base\n" ;
virtual void fun2() I cout << "Basekn" ;
;
class Derived : public Base
public :
void fun1() cout << " Derived\n" ;
void fun2() cout << " Derived\n" ;
;
void f(Base& b) b. fun1() ; b. fun2() ;
int main()

Derived obj ;
f(obj) ;
return 0 ;

执行这个程序的输出结果是( )。

A) Base
Base
B) Base
Derived
C) Derived
Base
D) Derived
Derived

答案

参考答案:B

解析: 在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象obj,执行f函数后,将派生类对象obj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为B。

选择题
填空题