问题
单项选择题
虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includediostream>using namespace std;class Base {public:virtual void f(){tout<<”f0+”;} void g(){cout<<”gO+”,}}; class Derived‘public Base {public:void f(){cout<<”f+”,) void g(){cout<<”g+”;) };int main() {Derived d;Base”p=&d;p->f();p->g();return 0;、} 运行时输出的结果是
A.f+g+
B.f0+g+
C.f+gO+
D.f0+g0+
答案
参考答案:B
解析:此题考查通过虚函数实现多态调用的方法。由于基类Base中f()为虚函数,在派生类Derived中f()虽然重定义为虚陈述函数,根据虚函数支持多态调用的规则,基类指针*p指向派生类对象d,即Base*p=&d,此时通过基类指针调用虚函数f()时,被调用的是基类指针所指的实际对象d的虚函数f(),调用实函数g()时,则仍为基类的实函数g(),所以输出结果为fo+g+。