有如下程序: #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”。