问题
单项选择题
以下程序执行结果是 ( )。 #include <iostream.h> class Base { publicvirtual void fun() { cout<<"B"; } }; class Derived { public:Derived() { cout<<"D"; }virtual void fun(){ Base::fun(); cout<<"C"; } } int main () {Base *ptr;Derived obj;ptr=&obj;p->fun ( );return 0; }
A.DBC
B.DCB
C.BDC
D.CBD
答案
参考答案:A
解析: 本题考核虚函数的应用。主函数中创建派生类Derived的对象。obj时,调用其构造函数首先输出字符’D’。然后调用fun()函数,由于派生Derived已对基类的虚函数fun()进行了重定义,所以语句“p->fun();”调用的是派生类中的函数fun(),即输出BC。所以答案为A选项。