有如下程序:#include<iostrealn>using namespace stdclass A{public:virtual void f(){cou

17 查阅

有如下程序:

#include<iostrealn>

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解析:函数f( )是虚函数,函数g( )不是虚函数,因此当指向派生类的指针调用基类的对象时,会调用派生类的虚函数f( ),但还是会调用基类的成员函数g( ),因此会输出32。

计算机二级