单选题
有如下程序:
#include
using namespace std;
class TcstClass 1
{
public:
virtual void fun(){cout<<“1”;}
};
class TestClass2:public TestClass 1
{
public:
TestClass20{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;
}
执行上面程序的输出是( )。
【正确答案】
C
【答案解析】解析:主函数中定义TestClassl的对象aa,*p对象指针,TestClass2的对象bb以及TestClass3的对象cc。p指向cc,TestClass3为TestClass2的派生类,构造函数输出2。TestClass3中fun函数中为TestClass2中的fun,调用TestClass2的构造函数,输出2。“p->fun();”,TestClass2继承于TestClassl中的fun,所以输出1。然后输出TestClass3中的“cout<<”3””,即输出3。