问题 填空题

执行下列程序的输出结果是______: #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

解析:TestClass2 主函数中首先定义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。

单项选择题
问答题 简答题