问题 单项选择题

有如下程序:
#include < iostream >
using namespace std;
class A
public :
virtual void funcl() cout <<"A1" ;
voidfunc2() 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 ;
return 0 ;执行这个程序的输出结果是(
)。A) B1B2
B) A1A2
C) B1A2
D) A1B2

答案

参考答案:C

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

单项选择题
单项选择题