有如下程序: #inClude<iostream> &

来源:网友

有如下程序:#inClude<iostream> &

问题:

[单选]有如下程序:
#inClude<iostream>usingnamespaCestd;ClassB{
publiC:
virtualvoidshow(){Cout<<”B”;}};
ClassD:publiCB{.publiC:
voidshow(){Cout<<”D”;}};
voidfunl(B*ptr){ptr一>show();}voidfUN2(B&ref){ref.show();}
voidfhIl3(BB.{b.show();}intmain()
{
Bb,*P=newD;Dd;
funl(P);fun2(B.;fun3(D);
deleteP;return0;}
执行这个程序的输出结果是()。

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

参考答案:C

参考解析:

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

你会喜欢下面的文章?