问题
单项选择题
有下列程序:
#inClude<iostream>
using namespace std;
c1ass A
pubic:
virmal void func1()cout<<"A1";
void func2()cout<<"A2";
;
c1ass B:public A
publIc:
void func1()cout<<"B1";
void func2()cout<<"B2";
;
int main()
A*p=new B;
p->func1();
p->func2();
return 0;
运行此程序后,屏幕上将显示输出( )。
A.B182
B.A1A2
C.B1A2
D.A182
答案
参考答案:C
解析: 程序中B为A的派生类,由主函数入手,主函数中定义了类A的指针p指向类B。根据基类中的“virtual void func1()”知道A中的func1为虚函数,执行“p->func1();”语句,通过指针变量调用此虚函数,此时调用的就是指针变量指向的同名函数,即派生类的func1函数,输出B1。而fun2不是虚函数,所以执行“p->func2();”输出为A2。