有如下程序: #include<iostream> using namespace std class Base{ int b; public: Base(int i) {b=i;} Void disp (

admin2009-08-15  29

问题 有如下程序:
   #include<iostream>
   using namespace std
   class Base{
   int b;
   public:
     Base(int i) {b=i;}
     Void disp ( ) {cout<<"Base:b="<<b<<’’; }
   };
    class Base1:virtual public Base{
   public:
     Base1(int i):Base(i){}
   };
   class Base2:virtual public Base{
   public:
     Base2(int i):Base(i){}
   };
   class Derived:public Basepublic Base1{
     int d;
   public:
     Derived(int i ,int j):Base1(j),Base2(j),【  】
     { d=i; }
     void disp() {cout<<"Derived:d="<<d<<’ ’;}
   };
   int main()
     Derived objD(1,2);objD. disp()
     objD. Base::disp();
     objD. Base1::disp()
     objD. Base2::disp();
     return 0;
   }
   请将程序补充完整,使程序在运行时输出:
   Derivd:d=1 Base:b=2 Base:b=2 Base:b=2

选项

答案Base(j)

解析 因为程序在运行时输出:Derivde:d=1 Base:b=2 Base:b=2 Base:b=2,而前两个Base:b=2 Base:b=2分别来自Base1(j),Base2(j),而在程序类的声明中,Base类也具有输出Base:b=2的功能。所以,程序中应补充的代码为Base(j)。
转载请注明原文地址:https://kaotiyun.com/show/GEjp777K
0

最新回复(0)