请写出下面的输出:class B{public:virtual void Print(void){printf(“B::Print\n”);}virtual void Reprint(void){printf(“B:Reprint\n”);}void Algo(void){Print();Reprint();}};class D : public B{public:virtual void Print(void){printf(“D::Print\n”);}};void main(){B *p = new

题目

请写出下面的输出:

class B

{

public:

virtual void Print(void)

{

printf(“B::Print\n”);

}

virtual void Reprint(void)

{

printf(“B:Reprint\n”);

}

void Algo(void)

{

Print();

Reprint();

}

};

class D : public B

{

public:

virtual void Print(void)

{

printf(“D::Print\n”);

}

};

void main()

{

B *p = new D();

p->Print();

p->Algo();

}


相似考题
参考答案和解析
正确答案:
 
更多“请写出下面的输出:class B{public:virtual void Print(void){printf(“B::Print\n”);}virtual void Reprint(void){printf(“B:Reprint\n”);}void Algo(void){Print();Reprint();}};class D : public B{public:virtual void Print(void){printf(“D::Print\n”);}};void main(){B *p = new”相关问题
  • 第1题:

    下面程序的运行结果为 include Class Astatic int n; public: A( ) {n=1;} A(int n

    下面程序的运行结果为

    #include<iostream.h>

    Class A

    static int n;

    public:

    A( ) {n=1;}

    A(int num) {n=num;}

    void print( ) {cout < < n;}

    };

    int A: :n=2;

    void main( )

    {

    A a,b(3) ;

    a. print( ) ;

    b. print( ) ;

    cout < < endl;

    }

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个) 。

  • 第2题:

    下面程序运行时输出结果为【】。 include include class Rect { public: Rec

    下面程序运行时输出结果为【 】。

    include<iostream.h>

    include<malloc.h>

    class Rect

    {

    public:

    Rect(int1,int w)(length=1;width=w;)

    void Print(){cout<<"Area:"<<length *width<<endl;)

    void *operator new(size-t size){return malloc(size);}

    void operator delete(void *p){free(p)

    private:

    int length,width;

    };

    void main()

    {

    Rect*p;

    p=new Rect(5,4);

    p->Print();

    delete p;

    }


    正确答案:Area:20
    Area:20

  • 第3题:

    有如下程序:includeusing namespace std;class Base{public:void output( ){cout<

    有如下程序: #include<iostream> using namespace std; class Base{ public: void output( ){cout<<l;} virtual void Print( ){cout<<'B';} }; class Derived:public Base{ public: void output( ){cout<<1;} void Print( ){cout<<'D';} }; int main( ){ Base*prt=new Derived; prt->output( ); prt->Print( ); delete prt; return 0; } 程序的输出结果是

    A.1B

    B.1D

    C.2B

    D.2D


    正确答案:B
    解析:基类指针可以指向派生类对象,但是只能访问从基类中继承来的成员。派生类对从基类继承来的成员可以被重新定义。故打印1D

  • 第4题:

    下面程序段的输出结果是 class Base { int i; Base() { add(1); } void add(int v) { i+=v; } void print() { System.out.println(i); } } class Extension extends Base { Extension() { add(2); } void add(int v) { i+=v*2; } } public class Test { public static void main(String args[]) { bogo(new Extension()); } static void bogo(Baseb){ b.add(8); b.print(); } }

    A.9

    B.18

    C.20

    D.22


    正确答案:D
    解析:本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main()函数进入程序,所有调用add()方法的过程将始终和Extension类的add()方法动态绑定。初始值:i=0;创建实例new Extension();先调用父类的默认构造函数Base(),并在父类的默认构造函数中执行add(1),i=0+1×2,所以i=2,再调用子类的默认构造函数Extension(),子类的默认构造函数中执行add(2),i=2+2×2,所以i=6;执行add(8);i=6+8×2,因此,最终i=22,正确答案为选项D。

  • 第5题:

    有如下程序: #inClude<iostream> using namespaCe std; Class Base{ publiC: void output{Cout<<1;} virtual void Print{Cout<<B’;} }; Class Derived:publiC Base{ publiC: void output{Cout<<2;} void Print{Cout<<’D ;} }; int main { Base * ptr=new Derived; ptr一>output; ptr一>Print; delete ptr; retum0; } 执行这个程序的输出结果是( )。

    A.1B

    B.lD

    C.2B

    D.2D


    正确答案:B
    在某基类中声明为vitua1并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个指向派生类对象的基类指针ptr,执行ptr一>outpnt后,会执行基类的output函数,输出1,由于Print是虚函数,所以ptr->Print会执行派生类的Print,即输出D,所以本题答案为B。

  • 第6题:

    C 程序写运行结果。

    class A

    {

    public:

    void f1()

    {

    printf("A::f1\r\n");

    }

    virtual void f2()

    {

    printf("A::f2\r\n");

    }

    void callfunc()

    {

    printf("A::callfunc\r\n");

    f1();

    f2();

    }

    };

    class B :public A

    {

    public:

    void f1()

    {

    printf("B::f1\r\n");

    }

    void f2()

    {

    printf("B::f2\r\n");

    }

    void callfunc()

    {

    printf("B::callfunc\r\n");

    f1();

    f2();

    }

    };

    int main()

    {

    B *pB=new B;

    pB->callfunc();

    A *pA=pB;

    pA->callfunc();

    return 0;

    }


    正确答案:
     

  • 第7题:

    下面程序的运行结果为include < iostream.h >class A{ static int n;public:A( ){n=1;}A(int nu

    下面程序的运行结果为 #include < iostream.h > class A { static int n; public: A( ){n=1;} A(int num){ n = num;} void print( ){cout<< n;} }; int A::n=2; void main( ) { A a,b (3); a.print( ); b.print( ); cout<< end1; }

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个)。

  • 第8题:

    写出程序的输出结果

    public abstract class A

    {

    public A()

    {

    Console.WriteLine('A');

    }

    public virtual void Fun()

    {

    Console.WriteLine("A.Fun()");

    }

    }

    public class B: A

    {

    public B()

    {

    Console.WriteLine('B');

    }

    public new void Fun()

    {

    Console.WriteLine("B.Fun()");

    }

    public static void Main()

    {

    A a = new B();

    a.Fun();

    }

    }


    正确答案:
     

  • 第9题:

    下面程序的结果是 ______。includeclass A{ public:virtual voidfun()=0{};};class

    下面程序的结果是 ______。 #include<iostream.h> class A{ public: virtual void fun()=0{}; }; class B:public A{ public: void fun () {cout<< "new file" ;} }; class C: public A{ public: void fun (){cout<<"open file"<< " " } }; class D: public A{ public: void fun () {cout<< "save file\n" ;} }; void main() { A a,*p; B b; C c; D d; p=&c; p->fun (); p=&b; p->fun (); p=&d; p->fun(); }

    A.new file open file save file

    B.new file new file new file

    C.编译出错

    D.open file new file save file


    正确答案:C

  • 第10题:

    有以下程序: #include 〈iostream〉 using namespace std; class A { public: virtual void setx(int i,int j=0) { x=i; y=j; } virtual void print()=0; protected: int x,y; }; class B : public A { public: void print() { cout〈〈x*x〈〈", "; } }; class C : public A { public: void print() { cout〈〈x*x*x〈〈end1; } }; int main() { A *pa; B b; C c; pa=&b; pa->setx(5); pa->print (); pa=&c; pa->setx(2); pa->print(); return 0; } 程序运行后的输出结果是( )。

    A.25,8

    B.2,5

    C.5,2

    D.8,25


    正确答案:A
    解析:该程序中定义了A类、B类和C类共3个类。其中,类A是抽象类,它的类体内有一个纯虚函数pnnt()。抽象类不可以定义对象,但可以定义指向对象的指针。类B和类C都是类A的公有派生类,这些类是具体类,它们对A类中纯虚函数都有不同的实现。该程序的主函数中,定义一个指向类A对象的指针pa,又定义了类B和类C的2个对象,并使指针pa分别指向这些对象。这里,采用动态联编,在运行时选择print()函数。所以,执行语句序列“pa=&b;pa->setx(5);pa->print();”后,系统调用类B的print()函数,输出25;执行语句序列“pa=&c;pa->setx(2);pa->prim();”后,系统调用类C的prim()函数,输出8。

  • 第11题:

    public class X {  public static void main(String [] args) {  try {  badMethod();  System.out.print(“A”); }  catch (Exception ex) {  System.out.print(“B”);  }  finally {  System.out.print(“C”);  }  System.out.print(“D”);  }   public static void badMethod() {} }  What is the result?()  

    • A、 AC
    • B、 BD
    • C、 ACD
    • D、 ABCD
    • E、 Compilation fails.

    正确答案:C

  • 第12题:

    public class X {  public static void main(String [] args) {  try {  badMethod();  System.out.print(“A”);  }  catch (Exception ex) {  System.out.print(“B”);  }  finally {  System.out.print(“C”);  }  System.out.print(“D”);  }  public static void badMethod() {  throw new RuntimeException();  }  }  What is the result? () 

    • A、 AB
    • B、 BC
    • C、 ABC
    • D、 BCD
    • E、 Compilation fails.

    正确答案:D

  • 第13题:

    下列程序打包到example包,main方法调用线程类输出0~9这10个数,请填写横线处的内容。

    注意:请勿改动main()主方法和其他已有语句内容,仅在横线处填入适当语句。

    ______

    interface MyInterface

    {

    public abstract void print(int n);

    }

    class Mythread extends Thread ______ MyInterface

    {

    public void run()

    {

    for(int i = 0; i < 10; i++)

    this.print(i);

    }

    public void print(int n)

    {

    System.out.print(n +" ");

    }

    }

    public class Example1_6

    {

    public static void main(String argv[])

    {

    Mythread th = new Mythread();

    ______

    }

    }


    正确答案:①package example; ②implements ③th.start();
    ①package example; ②implements ③th.start(); 解析:MyInterface是自定义的一个接口,Mythread继承于Thread类同时实现了 MyInterface。主方法先根据Mythread生成一个线程,然后将其启动。
    第1个空,题目中已经说明要将本程序打包到 example包,则说明要使用关键字“package”。
    第2个空,接口是抽象方法和常量的结合,是一种特殊的抽象类,接口必须通过“implements”实现以后才能被使用。所有线程都通过start()启动,进入线程调度队列。然后,系统会根据一定的算法对线程的运行进行调度,run()方法是线程的线程体。故第3空应该填“th.start()”。

  • 第14题:

    下列程序的运行结果是______。 include class A { public: virtual void use( ) {cou

    下列程序的运行结果是______。

    include<iostream.h>

    class A

    {

    public:

    virtual void use( ) {cout<<"in A\n";}

    };

    class B:public A

    {

    public:

    virtual void use( ) {cout<<"in B\n";}

    };

    class C:public B

    {

    public:

    virtual void use( ){cout<<"in C\n";}

    };

    void main( )

    {

    A*obj;

    bj=new C;

    obj->use( );

    delete obj;

    }


    正确答案:in C
    in C 解析:本题考查虚函数和多态性。原本obj指向祖先类,随后被赋值,指向新的子孙类,则在使用use这个重载的虚函数时,根据当前指向可确定调用子孙的同名虚函数。

  • 第15题:

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

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

    include <iostream>

    using namespace std;

    class A {

    int a;

    public:

    A():a(9){}

    virtual void print() const { cout<<a;};

    };

    class B: public A {

    char b;

    public:

    B( ){b='S';}

    void print() const {cout<<b;}

    };

    void show(A &x){ x.print0;}

    int main()

    { Ad1,*p;

    B d2;

    p=&d2;

    d1.print();

    d2.print0;

    p->print();

    show(d1);

    show(d2);

    return 0;}


    正确答案:9SS9S
    9SS9S 解析:本题主要考查虚函数的运用。在主函数中,首先通过基类对象d1调用print()函数,即调用基类的print()函数,输出一个9。然后通过派生类对象d2调用print()函数,即调用派生类的print()函数,输出一个'S'。接下来通过基类指针p调用print()函数,p此时指向的是派生类对象,而print()函数是虚函数,根据选择题(35)的解析,此时调用的是派生类的print()函数,输出一个'S'。然后,将基类对象d1传递给 show()函数,show()函数通过基类类型引用形参x调用print()函数,此时调用基类的 print()函数,输出一个'9'。最后,将派生类对象d2传递给show()函数,此时show()函数中通过基类类型引用x调用派生类对象d2的print()函数,根据虚函数的性质,应该调用的是派生类的print()函数,输出一个'S'。故最终输出的结果是:9SS9S。

  • 第16题:

    下面程序的运行结果为( )。 class A{ static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} } A::n=0; void main(){ A a,b(2); a.print(); b.pint(); }

    A.12

    B.11

    C.22

    D.21


    正确答案:C
    解析:n是类的静态数据成员,发生静态数据成员的赋值,则所有对象的静态数据成员的值都发生改变。

  • 第17题:

    请阅读下述代码,写出程序执行的结果

    #include <iostream>

    using namespace std;

    class CBase

    {

    public:

    virtual void print()

    {

    cout<< "base" << endl;

    }

    void DoPrint()

    {

    print();

    }

    };

    class CChild1: public CBase

    {

    public:

    virtual void print()

    {

    cout<< "child1" << endl;

    }

    };

    class CChild2: pu

    {

    public:

    virtual void pri

    {

    cout<< "chil

    }

    };

    void DoPrint(CB

    {

    base->DoPrint

    }

    void main()

    {

    CBase* base =

    CChild1* child

    CChild2* child

    DoPrint(child1

    DoPrint(child2

    DoPrint(base);

    delete base;

    base = child1;

    base->print();

    delete child1;

    delete child2;

    }


    正确答案:

     

  • 第18题:

    下面程序段的输出结果是( )。 class Base { int i; Base { add(1); } void add(int v) { i+=v: } void print { System.out.println(i); } } class Extension extends Base { Extension { add(2); } void add(int v) { i+=v*2: } } public class Test { public static void main(String args[]) { bogo(new Extension); } static void bogo(Base b) { add(8); print; } }

    A.9

    B.18

    C.20

    D.22


    正确答案:D
    D。【解析】本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main函数进入程序,所有调用add方法的过程将始终和Extension类的add方法动态绑定。初始值:i=0;创建实例newExtension;先调用父类的默认构造函数Base,并在父类的默认构造函数中执行add(1),i=O+1×2,所以i=2,再调用子类的默认构造函数Extension,子类的默认构造函数中执行add(2),i-2+2×2,所以i=6;执行add(8);i=6+8×2,因此,最终i=22,正确答案为选项D。

  • 第19题:

    请阅读以下一段程序,并给出答案。

    class A

    {

    public:

    A(){ doSth() }

    virtual void doSth(){ printf("I am A");}

    }

    class B:public A

    {

    public:

    virtual void doSth(){ printf("I am B");}

    }

    B b;

    执行结果是什么?为什么?


    正确答案:
     

  • 第20题:

    下面程序段的输出结果是 class Base { int i; Base() { add(1); } void add(int v) { i+=v; } void print() { System.out.println(i); } } class Extension extends Base { Extension() { add(2); } void add(int v) { i+=*2; } } public class Test { public static void main(String args[]) { bogo(new Extension()); } static void bogo(Base b) { b.add(8); b.print(); } }

    A.9

    B.18

    C.20

    D.22


    正确答案:D
    解析:本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main()函数进入程序,所有调用add()方法的过程将始终和Extension类的add()方法动态绑定。初始值:i=O;创建实例newExtension();先调用父类的默认构造函数Base(),并在父类的默认构造函数中执行add(1),i=0+1x2,所以i=2,再调用子类的默认构造函数Extension(),子类的默认构造函数中执行add(2),i=2+2x2,所以i=6:执行add(8);i=6+8x2,因此,最终i=22,正确答案为选项D。

  • 第21题:

    下面程序的运行结果为( )。 #include<iostream.h> class A static int n; public: A{n=1;} A(int num){n=hum;} void print{cout<<n;} }: int A::n=2; void main { A a,b(3); a.print; b.print; cout<<endl:

    A.11

    B.13

    C.23

    D.33


    正确答案:D
    本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员u的值也为3(这两个11实际上是同一个)。

  • 第22题:

    class Parent {     String one, two;  public Parent(String a, String b){     one = a;     two = b;    }  public void print(){ System.out.println(one); }    }  public class Child extends Parent {     public Child(String a, String b){     super(a,b);     }  public void print(){  System.out.println(one + " to " + two);     }  public static void main(String arg[]){     Parent p = new Parent("south", "north");     Parent t = new Child("east", "west");     p.print();     t.print();     }     }  Which of the following is correct?()

    • A、 Cause error during compilation. 
    • B、 south         east 
    • C、 south to north     east to west    
    • D、 south to north      east    
    • E、 south     east to west

    正确答案:E

  • 第23题:

    public class Pet{  public void speak(){   System.out.print(“ Pet ”);  }  }   public class Cat extends Pet{  public void speak(){   System.out.print(“ Cat ”);  }  }   public class Dog extends Pet{  public void speak(){   System.out.print(“ Dog ”);  }  }   执行代码   Pet[] p = {new Cat(),new Dog(),new Pet()};   for(int i=0;i〈p.length;i++)   p[i].speak();   后输出的内容是哪项?()  

    • A、Pet Pet Pet
    • B、Cat Cat Cat
    • C、Cat Dog Pet
    • D、Cat Dog Dog

    正确答案:C