有如下程序: #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。
你会喜欢下面的文章?