问题 单项选择题

有如下程序:   #include   usingnamespacestd;   classTestClass   {public:   virtualvoidfunl()   {cout<<"funlTestClass";}   virtualvoidfun2()   {cout<<“fun2TestClass”;}};   classTestClassl:publicTestClass   {voidfun()   {cout<<“funlTestClassl”;}};   intmain()   {TestClassobj1,*P;   TestClasslobj2;   p=&obj2;   p->fun1();   p->fun2();   return0;}   该程序执行后的输出结果是(  )。

A.funlTestClasslfun2TestClass

B.funlTestClass1fun2TestC1ass1

C.funlTestClassfun2TestClass

D.funlTestClassfun2TestClassl

答案

参考答案:A

解析:【解析】TestClass为基类,TestClass1是TestClass的派生类。基类中的funl和fun2被定义为虚函数,C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数,所以派生类中的funl和fun2也是虚函数。本题从main主函数入手,首先定义了TestClass类型的   对象obil和指针P,然后又定义了TestClassl的对象obj2。指针指向对象obj2,然后调用其成员函数fun1(),即输出“funlTestClassl”。

判断题
单项选择题