下面程序输出的结果为( )。 include"iostream.h"classA{public: A(){cOUt<<&qu下面程序输出的结果为( )。#include"iostream.h"classA{public:A(){cOUt<<"CLASSA"<<endl;}~A(){}};ClaSSB:publicA{public:B(){cout<<"CLASSB"<<endl;}~B(){}};voidmain(){A*P;P=newB:B*q:q=newB;}A.CLASSBB.CLASSA CLAS

题目
下面程序输出的结果为( )。 include"iostream.h"classA{public: A(){cOUt<<&qu

下面程序输出的结果为( )。

#include"iostream.h"

classA

{public:

A(){cOUt<<"CLASSA"<<endl;}

~A(){}};

ClaSSB:publicA

{public:

B(){cout<<"CLASSB"<<endl;}

~B(){}};

voidmain()

{A*P;

P=newB:

B*q:

q=newB;}

A.CLASSB

B.CLASSA CLASSB CLASSB

C.CLASSA CLASSB CLASSA CLASSB

D.CLASSA CLASSB CLASSB CLASSB


相似考题
更多“下面程序输出的结果为( )。 #include&quot;iostream.h&quot;classA{public: A(){cOUt&lt;&lt;&qu ”相关问题
  • 第1题:

    下面程序的输出结果为:Base:: fun,请将程序补充完整。include class Base{public: 【】

    下面程序的输出结果为:Base:: fun,请将程序补充完整。

    include <iostream.h>

    class Base{

    public:

    【 】 fun(){cout<<"Base::fun"<<end1:}

    class Derived : public Base{

    public:

    【 】 fun(){ cout<<"Derived::fun"<<end1; }

    };

    int main()

    {

    Base a,*pb;

    Derived b;

    pb = &b;

    pb->fun();

    return 0;

    }


    正确答案:virtual void void
    virtual void void 解析:本题考核虚函数的使用。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际指向的对象类的那个重定义版本,这样的调用称为多态调用。基类Base和派生类Derived中都定义了成员函数fun,但是有不同的实现。程序最后输出的结果为:Base::fun,表明通过对象指针pb调用的函数版本为派生类中定义的,只有把基类的fun函数定义为虚函数,才能满足要求。同时通过函数fun的定义可知函数的返回类型为void。

  • 第2题:

    在下面程序的画线处填上适当的内容,使程序执行后的输出结果为ABCD。 include using

    在下面程序的画线处填上适当的内容,使程序执行后的输出结果为ABCD。

    include <iostream>

    using namespace std;

    class A{

    public:A( ){cout<<'A';}

    };

    class B: (11) {

    public:B( ){cout<<'B';}

    {;

    class C: (12) {

    public:C( ){cout<<'C';}

    };

    class D:public B,public C{

    public:D( ){cout<<'D';}

    };

    void main( ){

    D( );

    cout<<endl;

    }


    正确答案:public A 空格
    public A 空格 解析:考查在继承中构造函数的调用顺序,创建派生类对象时依次调用基类的构造函数,最后调用派生类的构造函数。考查在继承中构造函数的调用顺序,创建派生类对象时依次调用基类的构造函数,最后调用派生类的构造函数。

  • 第3题:

    下面程序的输出结果是includeclass A{public: A( ) {cout < < "construtA" < < end

    下面程序的输出结果是 #include<iostream.h> class A { public: A( ) {cout < < "construtA" < < endl;} Virtual~A( ) {cout < < "destructA" < < endl;}}; class B: public A { }; class C:public A { }; class D:public B,public C { }; void main( ) { D d;}

    A.constructA

    B.constructA

    C.constructA

    D.constructA destructA constructA constructA constructA destructA constructA constrnctA destructA destructA constructA destructA destructA destructA destrctA destructA destructA


    正确答案:B
    解析:类D继承了类C和类B,所以在构造的时候分别构造类B和类C。

  • 第4题:

    下面这个程序的结果是includeclass A{private:int a;public:void seta( );int geta

    下面这个程序的结果是 #include<iostream.h> class A { private: int a; public: void seta( );int geta( );}; void A::seta( ) { a = 1;} int A::geta( ) {return a;} class

    A.1

    B.2

    C.随机输出1或2

    D.程序有错


    正确答案:D
    解析:在类A中有geta()函数,在类B中也有geta()函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。

  • 第5题:

    下面程序的输出结果是【】。 include using namespace std; class A {int a,b; public:A

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

    include <iostream>

    using namespace std;

    class A

    {

    int a, b;

    public:

    A()

    {

    a = b = 0;

    }

    A(int aa, int bb ) : a(aA) , b(bB)

    {

    cout <<"a="<<a<<","<<"b="<<b<<",";

    }

    ~A()

    {

    cout<<"D";

    };

    int main ( )

    {

    A x, y(2, 3);

    return 0;

    }


    正确答案:a=2b=3DD
    a=2,b=3DD 解析:本题主要考核构造函数与析构函数的应用。主函数中定义 A类对象x时无输出,定义对象y时调用构造函数输出a=2,b=3。在主函数结束前,对象x,y都调用各自的析构函数输出DD。所以最后答案为a=2,b=3DD。

  • 第6题:

    在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD( )。 #include<iostream> usingnamespacestd; classA { public:A(){cout<<A;} }; classB: { public:B(){cout<<B;} }; classC:virtualpublicA { public:C(){cout<<C;} }; classD:publicB,publicD { public:D(){cout<<D;} }; voidmain(){D04;}

    A.publicA

    B.privateA

    C.protectedA

    D.virtualpublicA


    正确答案:D
    D。【解析】由主函数main入手,定义了类D对象obi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。

  • 第7题:

    下面程序输出的结果为( )。 #include"iostream.h" classA {public: A(){cOUt<<"CLASSA"<<endl;} ~A(){}}; ClaSSB:publicA {public: B(){cout<<"CLASSB"<<endl;} ~B(){}}; voidmain() {A*P; P=newB: B*q: q=newB;}

    A.CLASSA

    B.CLASSA CLASSBCLASSB CLASSB

    C.CLASSA

    D.CLASSA CLASSBCLASSB CLASSACLASSB CLASSBCLASSB


    正确答案:C
    C。【解析】本题考查类的继承、类的实例化和构造函数、析构函数的调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。

  • 第8题:

    下面程序段的输出结果为 package test; public class A { int x=20; static int y=6; public static void main(String args[]) { Class B b=new Class B(); b.go(10); System.out.println(”x=”+b.x); } } class Class B { int x; void go(int y) { ClassA a=new ClassA(); x=a.y; } }

    A.x=10

    B.x=20

    C.x=6

    D.编译不通过


    正确答案:C
    解析:本题考查在Java中静态变量(类变量)的用法。在题目程序段中生成了一个staticinty=6类变量,在ClassA中调用的b.go(10),只不过是在ClassB中的一个局部变量,通过调用ClassB中的go方法可以生成一个ClassA对象,并给这个新生成的对象赋以ClassA中的类变量y的值。从main()方法作为入口执行程序,首先生成一个ClassB的对象,然后b.go(10)会调用ClassA,会给x和y赋值,x=a.y后,x值为6,再返回去执行System.out.println(”x=”+b.x)语句,输出为x=6,可见,正确答案为选项C。

  • 第9题:

    有如下程序: #include<iostream> usingnamespacestd; classA { public: A(){cout<<"A";} ~A(){cout<<"~A";} }; classB { A*P: public: B(){cout<<"B";p=newA;} ~B(){cout<<"~B";deleteP;} }; intmain() { Bobi; return0; } 执行这个程序的输出结果是( )。

    A.BAA~A~B~A

    B.ABA~B~A~A

    C.BAA~B~A~A

    D.ABA~A~B~A


    正确答案:B
    B。【解析】本题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输出B,P=newA再调用类A的构造函数输出A。析构函数的调用顺序和构造函数的调用顺序相反。

  • 第10题:

    下面程序的结果是( )。 #include(iostream.h> classA { inta; public: A( ):a(1){} voidshowa( )(cout<<a;} }; classB { inta; public: B( ):a(2){} voidshowa( ){cout<<a;} }; classC:publicA,publicB { inta; public: C( ):a(3){} voidshowa( ){cout<<a;} }; voidmain( ) { CC; showa( ); }

    A.1

    B.2

    C.3

    D.程序有错误


    正确答案:C
    C。【解析】类A,类B,中都有showa函数,类C继承后再次重写showa函数就解决了继承的二义性,这时C.showa函数显示的就是类C中的showa的值。

  • 第11题:

    在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD( )。

    #include<iostream>

    usingnamespacestd;

    classA

    {

    public:A(){cout<<'A';}

    };

    classB:

    {

    public:B(){cout<<'B';}

    };

    classC:virtualpublicA

    {

    public:C(){cout<<'C';}

    };

    classD:publicB,publicD

    {

    public:D(){cout<<'D';}

    };

    voidmain(){D04;}

    A.publicA

    B.privateA

    C.protectedA

    D.virtualpublicA


    正确答案:D
    D。【解析】由主函数main入手,定义了类D对象obi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。

  • 第12题:

    在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。 include using nam

    在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。

    include<iostream>

    using namespace std;

    class A

    {

    public: A(){cout<<'A';}

    };

    class B:【 】

    {

    public:B(){cout<<'B';)

    };

    class C:【 】

    {

    public;C(){cout<<'C';}

    };

    class D:public B,public C

    {

    public:D(){cout<<'D';}

    };

    void main(){D obi;}


    正确答案:virtual public A virtual public A
    virtual public A virtual public A

  • 第13题:

    有以下程序: #include<iostream> usingnamespacestd; classA{ public: A( ){cout<<"A";} }; classB{public:B( ){cout<<"B";}}; classC:publicA{ Bb; public: C( ){cout<<"C";} }; intmain( ){Cobj;return0;} 执行后的输出结果是( )。

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    D。【解析】本题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。

  • 第14题:

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

    有如下程序: #include<iostream> using namespace std; classA { 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.ABC

    B.BAC

    C.ACB

    D.CBA


    正确答案:A

  • 第15题:

    下面程序段的输出结果为 package test; public class ClassA { int x=20; static int y=6; public static void main(String args[]) { ClassB b=new ClassB(); b.go(10); System.out.println("x="+b.x); } } class ClassB { int x; void go(int y) { ClassA a=new ClassA(); x=a.y; } }

    A.x=10

    B.x=20

    C.x=6

    D.编译不通过


    正确答案:C
    解析:本题考查在Java中静态变量(类变量)的用法。在题目程序段中生成了一个static int y=6类变量,在ClassA中调用的 b.go(10),只不过是在ClassB中的一个局部变量,通过调用ClassB中的go方法可以生成一个ClassA对象,并给这个新生成的对象赋以ClassA中的类变量y的值。从main()方法作为入口执行程序,首先生成一个ClassB的对象,然后b.go(10)会调用 ClassA,会给x和y赋值,x=a.y后,x值为6,再返回去执行System.out.println("x="/b.x)语句,输出为x=6,可见,正确答案为选项C。

  • 第16题:

    下面程序输出的结果为 #include"iostream.h" class A { public: A(){cout<<"CLASSA"<<endl;} ~A() {} }; class B:public A { public: B(){cout<<"CLASSB"<<endl;} ~B() {} }; void main() { A * p; p=new B; B *q; q=new B; }

    A.CLASS A CLASS B

    B.CLASS A CLASS B CLASS B

    C.CLASS A CLASS B CLASS A CLASS B

    D.CLASS A CLASS B CLASS B CLASS B


    正确答案:C
    解析:每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。注意:类的实例化和构造函数、析函数的调用方式和何时调用。

  • 第17题:

    下面程序的运行结果为( )。 #include<iostream.h> ClassA { public:A( ){cout<<"1";} ~A( ){cout<<"2";} }; ClassB:public:A { public: B( ){cout<<"3";} ~B( ){cout<<"4";} }; Voidmain( ) { Bb; }

    A.1234

    B.1324

    C.1342

    D.3142


    正确答案:C
    C。【解析】本题考查在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数。

  • 第18题:

    下面程序段的输出结果为( )。 package test; public class ClassA { int x=20: static int y=6; public static void main(String args[]) { ClassB b=new ClassB; go(10); System.out.println("x="+b.x); } } class ClassB { int X; void go(int y) { ClassA a=new ClassA; x=a.Y ; } }

    A.x=10

    B.x=20

    C.x=6

    D.编译不通过


    正确答案:C
    C。【解析】本题考查在Java中静态变量(类变量)的用法。在题目程序段中生成了一个staticinty=6类变量,在ClassA中调用的b.go(10),只不过是在ClassB中的一个局部变量,通过调用ClassB中的90方法可以生成一个ClassA对象,并给这个新生成的对象赋以ClassA中的类变量Y的值。从main方法作为入口执行程序,首先生成一个ClassB的对象,然后b.go(10)会调用ClassA,会给X和Y赋值,X=a.Y后,X值为6,再返回去执行System.out.println("x="+b.x)语句,输出为x=6,可见,正确答案为选项C。

  • 第19题:

    下面程序输出的结果为 #include"iostream.h” class A { public: A(){cout<<"CLASSA"<<endl;} ~A() {} }; class B:public A { public: B(){cout<<"CLASS B"<<endl;} ~B(){} }; void main() { A*p; p=new B;

    A.CLASS A CLASS B CLASS B CLASS B

    B.CLASS A CLASS B CLASS A CLASS B

    C.CLASS A CLASS B CLASS B

    D.CLASS A CLASS B


    正确答案:C

  • 第20题:

    下面程序的运行结果为( )。 #include<iostream.h> classA { intnum; public: A(inti){num=i;) A(A&a){num=a.num++;} voidprint(){cout<<num;} }; voidmain() { Aa(1),b(a);

    A.print();

    B.print(); }

    C.11B.12

    D.21D.22


    正确答案:C
    C。【解析】本题考查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的hum变为1,而a的num变为2(先赋值再自加)。

  • 第21题:

    下面程序的输出结果是()。include using namespace std;class A {public:A( ) {cout<<

    下面程序的输出结果是( )。 #include <iostream> using namespace std; class A { public: A( ) {cout<<"A";} } class B { public: B() {coat<<"B" ;} } class C: public A { public: B b; C() {cout<<"C";} } void mian(){ C c; }

    A.CBA

    B.ABC

    C.ACB

    D.BCA


    正确答案:B
    解析:先执行基类A构造函数输出A,调用类B的构造函数输出B,调用本身构造函数输出C。

  • 第22题:

    下面程序输出的结果是( )。 include using namespace std; class A{

    下面程序输出的结果是( )。 #include<iostream> using namespace std; class A{ int X; public: A(int x):x(++x){} ~A(){cout<<x;} }; class B:public A{ int y; public: B(int y):A(y),y(y){} ~B(){cout<<y;}; }; void main(){ B b(3); }

    A.34

    B.43

    C.33

    D.44


    正确答案:A
    解析:对象创建的次序为:先基类,后派生类;析构时,先派生类,后基类。

  • 第23题:

    有如下程序: #include

    usingnamespacestd; classA { public: A(){cout<<"A";} ~A(){cout<<"~A";} }; classB { A*P: public: B(){cout<<"B";p=newA;} ~B(){cout<<"~B";deleteP;} }; intmain() { Bobi; return0; } 执行这个程序的输出结果是( )。

    A.BAA~A~B~A

    B.ABA~B~A~A

    C.BAA~B~A~A

    D.ABA~A~B~A


    正确答案:B
    B。【解析】本题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输出B,P=newA再调用类A的构造函数输出A。析构函数的调用顺序和构造函数的调用顺序相反。