有如下程序:#include <iostream> u
有如下程序:
#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){cout<<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;
}运行时的输出结果是( )。
答案
C
解析
a是基类的对象,执行GA a:sliow(a)、display(a)时,调用a.f()时调用的 是基类的成员函数输出11,b是派生类的对象,执行GB b:show(b)时, 参数采用的是按值传递,b是GA类对象,调用b.f ()时调用基类的成员 函数输出1。执行display(b)时,display函数参数采用的是地址传递,调 用的是派生类的成员函数输出2。