万能百科  > 计算机   > 

若有以下程序: #include<iostream>usingn

2021-07-13   

问题:

[单选] 若有以下程序:

#include<iostream>

usingnamespacestd;

classBase

{public:

Base()

{x=0;}

intx;};

classDerivedl:virtualpublicBase

{public:

Derivedl()

{x=10;}};

classDerived2:virtua11publicBase

{public:

Derived2()

{x=20;}};

classDerived:publicDerivedl,protectedDerived2{};intmain()

{Derivedobj;

cout<<obj.x<<endl;

return0;}

该程序运行后的输出结果是(  )。

A . 20

B . 30

C . 10

D . 0

正确答案:

A

参考解析:

A。【解析】本题考查虚基类的应用。虽然Derivedl和Derived2都是由共同的基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员x只存在一份副本,不论在类Derivedl中修改,还是在Derived2中修改,都是直接对这唯一副本进行操作。本题程序执行语句“Derivedobj;”时.就会先调虚基类Base的构造函数,使得X=0,然后执行类Derivedl的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签