问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class A
public:
virtual void func1()cout<<"A1";
void func2()cout<<"A2";
;
class B:public A
public:
void func1()cout<<"B1";
void func2()cout<<"B2";
;
int main()

A*p=new B;
p->func1();
p->func2();
delete p;
retum 0;执行这个程序的输出结果是______。A.B1B2
B.A1A2
C.B1A2
D.A1B2

答案

参考答案:C

解析: 本题考查虚函数。虚函数指在基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。题中定义了一个派生类对象B,并使用类A的对象指针指向B,由于基类A中的func1为虚函数,所以会执行派生类的func1,输出B1,而基类中的func2不是虚函数,所以p->func2()会执行基类的func2,输出A2。故答案为C。

填空题
单项选择题