问题 单项选择题

有如下程序:
#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) ;
GB b;show(B) ;display(B) ;
return 0;

程序的输出结果是

A) 1111
B) 1211
C) 11 2
D) 1212

答案

参考答案:C

解析: 基类对象作为实参进行传递时,无论使用的是对象还是对象引用作为形参,都只能在该函数中调用基类成员函数,因此当GA a作为实参时,调用的只能是GA的成员函数。而当派生类对象作为实参传递时,函数的形参则要分情况而定:如果是普通的对象传递,则是值传递,那么在函数中也只能调用基类的成员函数;如果是对象引用作为形参,则是地址传递,这个时候函数就可以调用重载后的虚成员函数。

选择题
填空题