有如下程序: include using namespace std class Base{ int b; public: Base(int i) {有如下程序:include<iostream>using namespace stdclass Base{int b;public:Base(int i) {b=i;}Void disp ( ) {cout<<"Base:b="<<b<<''; }};class Base1:virtual public Base{public:Base1(int i):Ba

题目
有如下程序: include using namespace std class Base{ int b; public: Base(int i) {

有如下程序:

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


相似考题
更多“有如下程序: include<iostream> using namespace std class Base{ int b; public: Base(int i) { ”相关问题
  • 第1题:

    下面程序的输出结果是【】。include using namespace std; class base { protected: int

    下面程序的输出结果是【 】。

    include <iostream>

    using namespace std;

    class base

    {

    protected:

    int a;

    public:

    base(){cout<<"0":}

    };

    class basel: virtual public base

    {

    public:

    base1(){ cout<<"1";}

    };

    class base2 : virtual public base

    {

    public:

    base2(){cout<<"2";}

    };

    class derived : public base1,public base2

    {

    public:

    derived () {cout<<"3"; }

    }

    int main ()

    {

    derived obj;

    cout<<end1;

    return 0;

    }


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

  • 第2题:

    有如下程序:includeincludeusing namespace std;class BASE{char c;public

    有如下程序: #include<iostream>#include<iosream> using namespace std; class BASE{ char c; public; BASE(char n):c(n){} virtual ~ BASE(){cout<<c;} }; class DERIVED; public BASE{ char c; public: DERIVED (char n): BASE (n+1)

    A.XY

    B.YX

    C.X

    D.Y


    正确答案:A

  • 第3题:

    有如下程序:includeusing namespace std;class BASE{public:~BASE(){cout<<"BASE";}}

    有如下程序: #include<iostream> using namespace std; class BASE{ public: ~BASE(){cout<<"BASE";} }; class DERIVED:public BASE{ public: ~DERIVED(){cout<<"DERIVED";} }; int main(){DERIVED x;return 0;} 执行后的输出结果是( )。

    A.BASE

    B.DERIVED

    C.BASEDERIVED

    D.DERIVEDBASE


    正确答案:D
    解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。

  • 第4题:

    有以下程序 include using namespace std; class Base { int a; public: Base(int x)

    有以下程序

    include <iostream>

    using namespace std;

    class Base

    {

    int a;

    public:

    Base(int x){ a=x; }

    void show(){ cout<<a; }

    class Derived : public Base

    {

    int b;

    public:

    Derived(int i) :Base(i+1),b(i){}

    void show() { cout<<b;

    };

    int main ()

    {

    Base b(5),*pb;

    Derived d(1);

    pb=&d;

    pb->show ();

    return 0;

    }

    运行后的打印结果是______。


    正确答案:2
    2 解析:本题考核基类指针与派生类指针的使用。本例程序中类Derived是从基类Base公有继承来的。main()中定义了基类对象b和一个基类指针pb,又定义了派生类Derived的对象d。由于Derived是Base的子类型,因此可以将派生类Derived的对象d的地址赋值给指向基类Base的指针pb,但这时指针pb只能使用从基类Base继承的成员。所以通过对象指针Pb调用的show函数是基类的成员函数show(),从而输出基类私有数据成员a的值2。

  • 第5题:

    有如下程序:include using namespace std;class BASE{public:~BASE() {cout<<"BASE";

    有如下程序: #include <iostream> using namespace std; class BASE{ public: ~BASE() {cout<<"BASE"; } }; class DERIVED: public BASE { public: ~DERIVED() {cout<;"DERIVED"; } }; int main(){DERIVED x; return 0;} 执行后的输出结果是______ 。

    A.BASE

    B.DERIVED

    C.BASEDERIVED

    D.DERIVEDBASE


    正确答案:D
    解析:析构函数的调用顺序是,先调用派生类的析构函数,再调用基类的析构函数。