有如下程序: #include<iostream> using namespace std; class TestClass1 { public: virtual void fun(){cout<<’’1’’;} }; class TestClas

admin2019-06-04  21

问题 有如下程序:
#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()
{TestClass1 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继承于TestClassl中的fun,所以输出1。然后输出TestClass3中的“cout<<’’3’’”,即输出3。
转载请注明原文地址:https://jikaoti.com/ti/l8A0FFFM
0

最新回复(0)