计算机二级

将下面程序补充完整。 include using namespace std; class Base{ public: 【 】fun(){r将下面程序补充完整。include <iostream>using namespace std;class Base{public:【 】 fun(){return 0;} //声明虚函数};class Derived:public Base{public:x,y;void SetVal(int a,int b){}int fun(){return x+y;}};v

题目
将下面程序补充完整。 include using namespace std; class Base{ public: 【 】fun(){r

将下面程序补充完整。

include <iostream>

using namespace std;

class Base{

public:

【 】 fun(){return 0;} //声明虚函数

};

class Derived:public Base{

public:

x,y;

void SetVal(int a,int b){}

int fun(){return x+y;}

};

void 【 】 SetVal(int a,int b){x=a;y=b;} //类Derived成员函数

void main(){

Derived d;

cout<<d.fun()<<endl;

}

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序中划线处正确的语句是()。 include using namespace std;class Base{public:v

下列程序中划线处正确的语句是( )。 # include <iostream> using namespace std; class Base { public: void fun(){cout<<"Base:: fun" <<endl;} }; class Derived:public Base { void fun() { ______ ∥显式调用基类的函数fun() cout<<"D

A.fun();

B.Base.fun();

C.Base::fun();

D.Base- >fun();


正确答案:C

第2题:

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

第3题:

有如下程序:

#include +

using namespace std ;

#include

using namespace std;

class Base

{

public:

void fun(){cout<<"Base::fun"<

};

class Derived:public Base

{

public:

void fun()

{

cout<<"Derived::fun"<

}

};

int main()

{

Derived d;

d.fun();

return 0;

}

已知其执行后的输出结果为:

Base::fun

Derived::fun

则程序中下划线处应填入的语句是

A . Base.fun();

B . Base::fun()

C . Base->fun()

D . fun();


正确答案:B

第4题:

请在下列程序中的横线处填写正确的语句。include using namespace std; class Base{ pu

请在下列程序中的横线处填写正确的语句。

include<iostream>

using namespace std;

class Base{

public:

void fun(){cout<<“Basefun”<<endl;}

);

class Derivde:public Base{

public:

void fun(){

//调用基类的函数fun()

cout<<“Derived fun”<<endl;

}

};


正确答案:Base::fun()。
Base::fun()。 解析: 本题考查的是派生类对基类成员的访问。本题中派生类Derived覆盖了基类Base中的fun (),如果需要调用基类中的fun(),则需要使用域运算符“::”。故应填写Base::fun()。

第5题:

有如下程序: include using namespace std; class BASE { public

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

A.BASE

B.DERIVED

C.BASEDERIVED

D.DERIVEDBASE


正确答案:D
解析:本题考查基类析构函数和派生类析构函数的调用次序。

第6题:

有如下程序: include using namespace std; class Base { public:

有如下程序: #include <iostream> using namespace std; class Base { public: Base(int x=0) { cout<<x; } } class Derived: public Base{ public: Derived(int x=0) { cout<<x; } private: Base val; }; int main() { Derived d(1); return 0; }程序的输出结果是

A.0

B.1

C.1

D.1


正确答案:D
解析:本题考查的知识点是:类的构造。建立一个类的对象时,构造函数的执行顺序如下:
①执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);
②执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):(如果一行声明了多个对象,则还要遵循自左向右)
③执行自身的构造函数。
本题Derived类继承于Base类,所以首先会构造基类Base,但Derived类的构造函数没有初始化列表,所以将调用Base类的默认构造函数,输出一个0。接下来由于它的成员中还定义了一个Base类的对象,而构造函数也没有显示初始化这个对象,所以再次调用Base类的默认构造函数输出一个0。最后构造自身,因为主函数中传入了构造参数1,所以构造自身时输出了一个1。故最终输出结果为001,应该选择 D。

第7题:

有如下程序:include using namespace std;class Base{public:Base(){cout<<"BB"; f()

有如下程序:#include <iostream>using namespace std;class Base{ public: Base(){cout<<"BB"; f(); } Void f(){cout<<"Bf"; }};class Derived: public Base{ public: Derived() { cout<<"DD"; } void f() { cout<<"Df"; }};int main() { Derived d; return 0; }执行上面的程序将输出( )。

A.BBBfDD

B.BBDfDDDf

C.DD

D.DDBBBf


正确答案:A

第8题:

有如下程序 include using namespace std; class Base { protected:

有如下程序 #include <iostream> using namespace std; class Base { protected: Base( ){cout<<'A'; } Base(char c) { cout<<c; } }; class Derived: public Base { public: Derived(char c){ cout<<c; } }; int main( ){ Derived d1 ('B'); return 0; } 执行这个程序屏幕上将显示输出

A.B

B.BA

C.AB

D.BB


正确答案:C
解析:本题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序如下:
  (1) 执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右):
  (2) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):
  (3) 执行派生类的构造函数。
  所以本题在建立派生类Derived的对象d1时会先调用基类Base的构造,由于派生类中没有通过初始化列表显式构造基类对象,所以调用的是基类的默认构造函数,会输出一个'A'。然后调用自身的构造函数,输出传入的构造参数'B'。故程序输出的结果是:AB。所以应该选择C。

第9题:

下列程序的输出结果为2,请将程序补充完整。 inelude using namespace std; class Bas

下列程序的输出结果为2,请将程序补充完整。

inelude<iostream.h>

using namespace std;

class Base

{

public:

______ void fun( ){cout<<1;}

};

class Derived: public Base

{

pbulic:

void fubn( ){cout<<2;}

};

int main( )

{Base*P=new Derived;

P→fun( );

delete P;

return 0;

}


正确答案:virtual
virtual 解析:本题考查虚函数的概念。在C++中,一个基类的指针可以用于指向它的派生类对象。而且通过这样的指针调用虚函数时,被调用的是该指针实际指向的对象类的那个重定义版本。在本题中,通过对象指针P调用的是派生类中重定的。fun函数,那么基类中的fun只有是虚函数才能满足要求。

第10题:

下列程序的输出结果为2,请将程序补充完整。 include using namespace std; class Basc

下列程序的输出结果为2,请将程序补充完整。

include<iostream>

using namespace std;

class Basc

{

public:

【 】void fun(){cout<<1;}

};

class Dcrived:public Base

{

public:

void fun(){cout<<2;}

};

int main()

{

Base*p=new Derived;

p->fun();

delete p;

return 0;

}


正确答案:virtual
virtual 解析:利用虚函数实现多态。

更多相关问题