问题 单项选择题

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

public:
Base()
virtual void f1()

cout<<"f1 of base"<<end1;

~Base()
;
class Derive: public Base

public:
void fl(int x)

cout<<"f1 of derive"<<end1;

;
int main ( )

Base *p;
Derive obj1;
p=&obj 1;
p->f1 ( );
return 0;

A.编译时出错

B.f1 of derive

C.f1 of base

D.以上答案都不对

答案

参考答案:B

解析: 本程序中,将基类的成员函数n()定义为虚函数,而函数f1()在派生类中被重新定义,重定义的函数仍然是一个虚函数。在C++中,一个基类指针(或引用)可以指向它的派生类对象,而且通过这样的指针或引用调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。

问答题
判断题