有如下程序: #include<iostream> using namespace std; class Basel { public: BaseI(int D.{cout<<d;} 一Basel{} }; class Base2 { public: Base2(int D.{tout<<d;} ~Base2{} }; class Derived:public Basel,Base2 { public: Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,

题目

有如下程序: #include<iostream> using namespace std; class Basel { public: BaseI(int D.{cout<<d;} 一Basel{} }; class Base2 { public: Base2(int D.{tout<<d;} ~Base2{} }; class Derived:public Basel,Base2 { public: Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{} private: int bl: int b2: }; int main { Derived d(1,2,3,4); return 0; } 执行这个程序的输出结果是( )。

A.1234

B.2134

C.12

D.21


相似考题
更多“有如下程序: #include&lt;iostream&gt; using namespace std; class Basel { public: BaseI ”相关问题
  • 第1题:

    请将如下程序补充完整,使得输出结果为:bbaa。 include using naluespace std; class

    请将如下程序补充完整,使得输出结果为:bbaa。

    include<iostream>

    using naluespace std;

    class A{

    public:

    ______{eout<<"aa";}

    };

    class B:public A{

    public:

    ~B( ){eont<<"bb";}

    };

    int ulain( ){

    B*P=new B;

    delete P;

    return 0;

    }


    正确答案:~A( )
    ~A( ) 解析:派生类和基类的析构函数调用顺序是先调用派生类的析构函数,然后调用基类的析构函数,打印“bb”说明已经在调用派生类的析构函数,则要继续打印“aa”,显然就只有定义在基类的析构函数中去打印,故答案为~A( )。

  • 第2题:

    下面程序的运行结果是( )。 #include<iostream.h> class base{ protected: int a; public: base{cout<<”0”;} }; class basel:virtual base{ public: basel{cout<<”1”;} }; class base2:virtual base i public: base2{cout<<”2”;} }; class derived:public basel,public base2{ public: derived{cout<<”3”;} }; void main derived obj; cout<<endl:

    A.0123

    B.3120

    C.0312

    D.3012


    正确答案:A
    本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  • 第3题:

    阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
    【说明】
    以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



    【C++代码】
    #include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


    答案:
    解析:
    (6)(1)void drawCircle (int radius,int x,int y)
    (2)DrawCircle*drawCircle
    (3)drawcircle
    (4)drawCircle(radius,x,y)
    (5)new RedCircle()
    (6)new GreenCircle()【解析】
    第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
    第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
    第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
    第四空调用drawCircle(radius,x,y)方法。
    第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

  • 第4题:

    下面程序的运行结果是( )。 #include<iostream.h> classbase{ protected: inta; public: base(){cout<<"0";} }; classbasel:virtualbase{ public: basel(){cout<<"1";} }; classbase2:virtualbase{ public: base2(){cout<<"2";} }; classderived:publicbasel,publicbase2{ public: derived(){cout<<"3";} }; voidmain() { derivedobj; eout<<endl: }

    A.0123

    B.3120

    C.O312

    D.3012


    正确答案:A
    A。【解析】本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  • 第5题:

    下面程序的运行结果是includeclass base{protected: int a;public: base(){cout <<

    下面程序的运行结果是 #include<iostream.h> class base{ protected: int a; public: base(){cout <<"0";} }; class basel:virtual base{ public: basel () {cout <<"1";} }; class base2:virtual base{ public: base2(){cout <<"2";} }; class derived:public basel,public base2{ public: derived(){cout <<"3";} }; void main() { derived obj; cout <<end1; }

    A.123

    B.3120

    C.312

    D.3012


    正确答案:A
    解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。