问题 单项选择题

有如下程序:   #included   usingnamespacestd;   classA{   public:   virtualvoidfuncl(){cout<<"A1";)   voidrune2(){cout<<"A2";}};   classB:publicA{   public:   voidfuncl(){cout<<:"B1";}   voidfunc2(){eout<<"B2";}};   intmain(){   A*p=newB;   p->func1();   P->func2();   return0;}   执行该程序,屏幕上将显示输出(  )。

A.B1B2

B.A1A2

C.B1A2

D.A1B2

答案

参考答案:C

解析:【解析】程序中B为A的派生类,由主函数入手,主函数中定义了类A的指针P指向类B。根据基类中的“virtualvoidfuncl()”知道A中的funcl为虚函数,执行“P->fund();”语句,通过指针变量调用此虚函数,此时调用的就是指针变量指向的同名函数,即派生类的fund函数,输出B1。而fun2不是虚函数,所以执行“p->func2();”输出为A2。

选择题
单项选择题 A1/A2型题