问题
单项选择题
有如下程序:
#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;
}
运行时的输出结果是()
A.12
B.34
C.14
D.32
答案
参考答案:D
解析:
在派生类中可以重新定义从基类继承下来的虚函数。多态调用是指借助于指向基类的指针或引用的调用。C++中,一个基类指针(或引用)可以用于指向他的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。