单选题
虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:
#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+。