单选题 有如下程序:
#include<iostream>
using namespace std;
class A{
public:
virtual void f(){cout<<1;}
void g(){cout<<2;}
};
class B:public A{
public:
virtual void f(){cout<<3;}
void g(){cout<<4;}
};
void show(A &a){a.f();a.g();)
int main(){
B b;
show(b);
return 0;
}
运行时的输出结果是______。
【正确答案】 D
【答案解析】[解析] 在派生类classB中对基类中的虚拟成员函数virtual void f()和实函数void g()进行了重新定义,在主函数中通过语句show(b);调用派生类中的虚函数virtual void f(){cout<<3;)输出3,调用基类的实函数void g(){cout<<2;}输出2。所以选项D为正确答案。