问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class B
public:
Virtual void show()cout<<“B”;

class D:publicB
public:
void show()cout<<“D”;

void funl(B*ptr)ptr->show();
voidun2(B&ref)ref.show();
void fun3(BB)b.show();
int main()
B b,*p=new D;
D d;
fun1(p);
fun2(b);
fun3(d);
return 0;

程序的输出结果是( )。

A.BBB

B.BBD

C.DBB

D.DBD

答案

参考答案:C

解析: 本题考查的知识点是,虚函数与多态性。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。故本题最终输出结果为DBB。

单项选择题 A1型题
判断题