有如下程序; #include<iostream> usingnamespacestd; clasBasel{ public: Basel(intd){cout<<d;} -Basel(){} }; classBase2{ public: Base2(intd){out<<d;} ~Base2(){} }; classDerived:publicBase1,Base2{ public: Derived(inta,intb,intC,intd): Basel(b),Base2(a),b1(d),b2(c){

题目

有如下程序; #include<iostream> usingnamespacestd; clasBasel{ public: Basel(intd){cout<<d;} -Basel(){} }; classBase2{ public: Base2(intd){out<<d;} ~Base2(){} }; classDerived:publicBase1,Base2{ public: Derived(inta,intb,intC,intd): Basel(b),Base2(a),b1(d),b2(c){} private: intb1; intb2; }; intmain(){ Derivedd(1,2,3,4); return0; } 运行时的输出结果是( )。

A.1234

B.2134

C.12

D.21


相似考题
更多“有如下程序; #include&lt;iostream&gt; usingnamespacestd; clasBasel{ public: Basel(intd){ ”相关问题
  • 第1题:

    有如下程序:includeusing namespace std;class A{public:A(){cout<<"A";}};class B{p

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

    A.CBA

    B. BAC

    C.ACB

    D.ABC


    正确答案:D

  • 第2题:

    有如下程序: #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


    正确答案:D
    本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。

  • 第3题:

    有如下程序:include using namespace std;class shapes{protected: int x, y;public:

    有如下程序: #include <iostream> using namespace std; class shapes { protected: int x, y; public: void setvalue(int d, int w=O) { x=d; y=w; } virtual void disp()=O; }; class square : public shapes { public: void disp () { cout<<x*y<<end1; } }; int main ( ) { shapes *ptr; square s1; ptr=&s1; ptr->setvalue (10, 5) ;ptr->disp(); return 0; } 执行上面的程序将输出( )。

    A.50

    B.5

    C.10

    D.15


    正确答案:A
    解析:本题中基类shapes是一个抽象类(拥有纯虚函数disp())。在主函数中定义了抽象类的对象指针ptr,并给它赋值派生类square的对象s1,然后进行赋值和输出的操作。

  • 第4题:

    有如下程序: include using namespace std; class PARENT { public: PARENT() { cout

    有如下程序:

    include <iostream>

    using namespace std;

    class PARENT

    {

    public:

    PARENT() { cout <<"PARENT"; }

    };

    class SON : public PARENT

    {

    public:

    SON() {cout << "SON"; }

    };

    int main()

    {

    SON son;

    PARENT *p;

    p = &son;

    return 0;

    }

    执行上面程序的输出是______。


    正确答案:PARENTSON
    PARENTSON 解析:此题考查的是派生类的构造。主函数开始在定义SON类的对象son时,会先执行PARENT类的构造函数再执行SON类的构造函数,输出 “PAKENTSON”;接下来的语句定义PARENT和让指针p指向son对象,都并未创建任何对象,所以不会调用构造函数。故最终的输出结果是:PARENTSON。

  • 第5题:

    有如下程序:include using namespace std;class AA{public: virtual void f() {cout<

    有如下程序: #include <iostream> using namespace std; class AA { public: virtual void f() { cout<< "AA"; } }; class BB : public AA { public: BB() { cout << "BB"; } }; cla

    A.AA

    B.AABBCC

    C.BBAABBCC

    D.BBBBAACC


    正确答案:D
    解析:本题中,函数f()在基类AA中派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象bb,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出BB。最后执行语句“p=&cc; p->f();”,输出AA和CC。