单选题 虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #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; 、 } 运行时输出的结果是
【正确答案】 B
【答案解析】此题考查通过虚函数实现多态调用的方法。由于基类Base中f()为虚函数,在派生类Derived中f()虽然重定义为虚陈述函数,根据虚函数支持多态调用的规则,基类指针*p指向派生类对象d,即Base*p=&d,此时通过基类指针调用虚函数f()时,被调用的是基类指针所指的实际对象d的虚函数f(),调用实函数g()时,则仍为基类的实函数g(),所以输出结果为fo+g+。