有以下程序: #include<iostream> using namespace std; class Base { public: Base() { K=0; } int x; }; c

admin2010-12-16  43

问题 有以下程序:
#include<iostream>
   using namespace std;
   class Base
   {
   public:
   Base()
   {
   K=0;
   }
   int x;
   };
   class Derivedl:virtual public Base
   {
   public:
   Derivedl()
   {
   x=10;
   }
   };
   class Derived2:virtua1 public Base

选项

答案20。

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

随机试题
最新回复(0)