下面程序的运行结果是 ______。includeclass A{public virtual、~(){cout下面程序的运行结果是 ______。 #include<iostream.h> class A{ public virtual、~(){ cout<<”call A:: ~A()”<<end1;} }; class B:public A{ B(int i){p=new char[i]:} -B(){ delete[)p; Cout<<”call B:: ~B()”; } }; void main

题目
下面程序的运行结果是 ______。includeclass A{public virtual、~(){cout<<”call A::

下面程序的运行结果是 ______。 #include<iostream.h> class A{ public virtual、~(){ cout<<”call A:: ~A()”<<end1;} }; class B:public A{ B(int i){p=new char[i]:} -B(){ delete[)p; Cout<<”call B:: ~B()”; } }; void main() { A*a=new B(8); Delete a; }

A.call B:: ~B()

B.call B:: ~B()

C.call A:~A()

D.call A::~A()


相似考题
更多“下面程序的运行结果是 ______。#include<iostream.h>class A{public virtual、~(){cout<<”call A:: ”相关问题
  • 第1题:

    下面程序的输出结果是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。

  • 第2题:

    下面程序的结果是includeclass A{int a;public:A( ):a(1){}void showa( ){cout<

    下面程序的结果是 #include<iostream.h> class A { int a; public: A( ):a(1){} void showa( ){cout<<a;} }; class B { int a; public: B( ) :a(2) {}

    A.1

    B.2

    C.3

    D.程序有错误


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

  • 第3题:

    下面程序的运行结果是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
    解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  • 第4题:

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

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

    A.123

    B.3120

    C.312

    D.3012


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

  • 第5题:

    下面程序的结果是 ______。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

  • 第6题:

    下面程序的运行结果是()。includeusing namespace std;class A{public: virtual~A() {

    下面程序的运行结果是( )。 #include<iostream> using namespace std; class A { public: virtual~A() { cout<<"call A::~A()"<<endl;} }; class B:public A { char * p; public: B(int i) { p=new char[i];} ~B() { delete(p); cout<<"call B::~B()"; } }; void main() { A * a=new B(8); delete a; }

    A.call B::~B()call A::~A()

    B.call B::~B()

    C.call A::~A()

    D.call A::~A()call B::~B()


    正确答案:A
    解析:本题考查虚函数的使用,通过基类指针指向派生类的对象,从而动态地访问派生类对象中的虚函数。本题若没有把A类中的析构函数说明为virtual,则答案为C。