问题:

[单选] 有如下程序:
#inClude<iostream> using namespaCe std; Class B{
publiC:
virtual void show(){Cout<<”B”;} };
Class D:publiC B{ . publiC:
void show(){Cout<<”D”;} };
void funl(B * ptr){ptr一>show();} void fUN2(B&ref){ref.show();}
voidfhIl3(B B.{b.show();} int main()
{
B b,* P=new D; D d;
funl(P); fun2(B.; fun3(D);
delete P; return 0; }
执行这个程序的输出结果是( )。

A . BBB
B . BBD
C . DBB
D . DBD

参考答案:C

参考解析:

在某基类中声明为virtua1并在一个或多个派生类中被重新定义的成员函数,本题中定义类B的对象b、对象指针*P=new D以及类D的对象d:执行fun1会凋用派生类的show函数,因为show函数为虚函数,而调用fun2、fun3仍然为基类的show函数,所以本题答案为C。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

发表评论

您的电子邮箱地址不会被公开。