问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class TestClass1

public:
virtual void fun()cout<<"1";
;
class TestClass2: public TestClass1

public:
TestClass2()cout<<"2";
;
class TestClass3:public TestClass2

public:
virtual void fun()TestClass2::fun();cout<<"3";
;
int main()

TestClass 1 aa,*p;
TestClass2 bb;
TestClass3 cc;
p=&cc;
P->fun();
return 0;

执行上面程序的输出是( )。

A) 1122
B) 2112
C) 2213
D) 2223

答案

参考答案:C

解析: 主函数中定义TestClass1的对象aa,*p对象指针,TestClass2的对象bb以及TestClass3的对象cc。p指向cc,TestClass3为TestClass2的派生类,构造函数输出2。TestClass3中fun函数中为TestClass2中的。fun,调用TestClass2的构造函数,输出2。“p->fun();”,TestClass2继承于TestClass1中的fun,所以输出1。然后输出TestClass3中的“cout<<”3””,即输出3。

单项选择题
单项选择题 A3/A4型题