问题 单项选择题

如下程序的输出结果是 #include<iostream> using namespace std; class A{ public: virtual void f( ){tout<<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 nlain( ){ B b; show(B) ; return 0; }

A.12

B.34

C.14

D.32

答案

参考答案:D

解析: 对象引用作为函数参数,实参是派生类对象,而形参为基类对象引用,故在函数中只能使用基类的成员函数,虚函数除外。虚函数由于在派生类对象中被重新定义,调用基类虚函数时,调用的是重新定义后的派生类虚函数。故答案为D。

多项选择题
名词解释