单选题
有如下程序:
#include<iostream>
using namespace std;
class base{
public:
void output(){cout<<1;}
virtual void print(){cout<<"B";}
};
class derived:public base{
public:
void output(){cout<2;}
void print(){cout<<"D";}
};
int main()
{
base*ptr=new derived;
ptr->output();
ptr->print();
delete ptr;
return 0;
}
程序的输出结果是______。
【正确答案】
B
【答案解析】[解析] 本题考查虚函数的使用。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应。
题中,基类指针ptr指向动态生成的派生类的对象空间。output()没有虚特性,“ptr->output();”只能访问基类中的函数,输出“1”;print()有虚特性,则“ptr->print();”访问的是派生类中的函数,输出“D”。故答案选B。