有如下程序: #include <iostream.h> class x { protected: int a; public: x() {

admin2010-03-29  30

问题 有如下程序:     #include <iostream.h>     class x     {     protected:         int a;     public:          x()          {             a=1;          }     };     class x1  : virtual public x     {     public:         x1()         {             a+=1;             cout<<a;         }     };     class x2  : virtual public x     {     public:        x2()        {        a+=2;        cout<<a;      }    };    class y : public xl,public x2    {    public:      y()      {        cout<<a<<end1;      }    };    int main()    {       y obj;       return O;    }    该程序运行后的输出结果是(    )。

选项 A、1
B、123
C、242
D、244

答案8

解析 本题程序中引入了虚基类。在主函数main中,执行语句“y obj;”时,先执行虚基类x的构造函数,使a=1;然后执行类x1的构造函数,使a=2,并输出值 2;再执行类x2的构造函数,使a=4,并输出值4;最后执行类y的构造函数,输出值4。
转载请注明原文地址:https://jikaoti.com/ti/CxW0FFFM
0

最新回复(0)