执行这个程序的输出结果是( );
#include<iostream>
using namespace std;
class TestClass1
public:
void fun1()cout<<"TestClass1\n";
virtual void fun2()cout<<"TestClass1\n";
;
class TestClass2:public TestClass1
public:
void fun1()cout<<"TestClass2\n";
void fun2()cout<<"TestClass2\n";
;
void f(TestClass1&b)b.fun1();b.fun2();
int main()
TestClass2 obj;
f(obj);
return 0;
参考答案:TestClass1
TcstClass2
解析: 主函数中首先定义TestClass2对象obj,然后执行“f(obj);”。“void f(TestClass1& b){b.fun1();b.fun2();}”语句中fun中参数为TestClass1类型的对象b,其中调用fun1()和fun2()。基类 TestClass1中的fun2()为虚函数,所以派生类中的fun2也是虚函数,所以输出为调用TestClass1中的fun1,TestClass2中的fun2。即结果为TestClass1和TestClass2。