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

admin2012-01-20  31

问题 有如下程序:    #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。
转载请注明原文地址:https://kaotiyun.com/show/EPVp777K
0

最新回复(0)