若有以下程序: #include<iostream> using namespace Std; Class Base {public: Base() {x=0;} int x;}; class Derived

admin2010-12-16  27

问题 若有以下程序:    #include<iostream>    using namespace Std;    Class Base    {public:    Base()    {x=0;}    int x;};    class Derivedl:virtua1 public Base    {public:    Derived1()    {x=10;}};    class Derived2:virtual1 public Base    {public:    Derived2()  

选项 A、20     
B、30
C、10     
D、0

答案A

解析  本题考查虚基类的应用。虽然Derived1和Derived2都是由共同的基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本,这时数据成员x只存在一份拷贝,不论在类Derivedl中修改,还是在De- rived2中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derivedob“”时,就会先调用虚基类Base的构造函数,使得x=0,然后执行类Derived1的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。
转载请注明原文地址:https://kaotiyun.com/show/37jp777K
0

最新回复(0)