问题
单项选择题
有如下程序: #include <iostream> using namespace std: class A{ public: virtual void funcl( ){cout<<"A1";} void func2( ){cout<<"A2";} }; class B:public A{ public: void funcl( ){cout<<"B1";} void fllnc2( ){cout<<"B2";} }; int main( ){ A*p=new B; p->funcl( ); p->func2( ); return 0: } 运行程序,屏幕上将显示输出
A.B182
B.A1A2
C.BlA2
D.AlB2
答案
参考答案:B
解析: 基类指针可以指向派生类对象,但是指针只能访问继承自基类的成员,而不能访问派生类中的新增加成员或重新定义后的成员。故p->funcl( );p->func2( );都执行基类的成员函数,打印A1A2。