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

有如下程序: #inClude<iostream>    using namespaCe std;    Class B{publiC: virtual void show(){Cout<<”B”;}    }; Class D:publiC B{   

问题:

[单选] 有如下程序:
#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。

联系我们

联系我们

查看联系方式

邮箱: 2643773075@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部