单选题 有如下程序 #include<iostream> using namespace std; classA{ 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(); return 0; } 运行此程序,屏幕上将显示输出( )。
【正确答案】 C
【答案解析】解析:此题考查的是虚函数的概念。此题中,func1是虚函数,func2是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=new B;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用func1时,运行的是派生类的版本,而通过该指针调用func2运行的是基类的版本。所以程序运行的最后输出是:B1A2。