若有以下程序: #includeusingn

若有以下程序: #includeusingn,第1张

若有以下程序: #includeusingn

问题:

[单选] 若有以下程序:

#include

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<

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。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5629342.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存