问题
单项选择题
有如下程序:
#include<iostream>
using namespace std;
class GA
public:
virtual int f( )return 1;
;
class GB:public GA
public:
virtual int f( )return 2;
;
void show(GA g)eout<<g.f( );
void display(GA&g)cout<<g.f( );
int main( )
GA a;show(
A.;display(A) ;
 
B.;display(B)
C.11 2
D.1212
答案
参考答案:C
解析: 基类对象作为实参进行传递时,无论使用的是对象还是对象引用作为形参,都只能在该函数中调用基类成员函数,因此当GA a作为实参时,调用的只能是GA的成员函数。而当派生类对象作为实参传递时,函数的形参则要分情况而定:如果是普通的对象传递,则是值传递,那么在函数中也只能调用基类的成员函数;如果是对象引用作为形参,则是地址传递,这个时候函数就可以调用重载后的虚成员函数。