下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 作业(8)

作业(8).doc

作业(8)

不可预知的未来花园
2019-05-17 0人阅读 举报 0 0 暂无简介

简介:本文档为《作业(8)doc》,可适用于高等教育领域

C作业题()一选择填空()定义重载函数的下列条件中,()是错误的。A要求参数个数不同B要求参数类型不同C要求函数返回值类型不同D要求在参数个数相同时,参数类型的顺序不同()关于下列虚函数的描述中,()是正确的。A虚函数是一个static存储类的成员函数B虚函数是一个非成员函数C基类中说明了虚函数后,派生类中可不必将对应的函数说明为虚函数D派生类的虚函数与基类的虚函数应具有不同的类型或个数()关于纯虚函数和抽象类的描述中,()是错误的。A纯虚数是一种特殊的虚函数,它没有具体实现B抽象类中一定具有一个或多个纯虚函数C抽象类的派生类中一定不会再有纯虚函数D抽象类一般作为基类使用,使纯虚函数的实现由其派生类给出()以下一种类中,()不能建立对象。A抽象类B派生类C虚基类D基类()下列函数中不能重载的是()。A)成员函数B)非成员函数C)析构函数D)构造函数()下列描述中,抽象类的特征有()。A)可以说明虚函数B)可以构造函数重载C)可以定义友员函数D)不能说明其对象()下列不属于动态联编实现的条件有()。A)要有说明的虚函数。B)调用虚函数的操作是指向对象的指针或者对象引用:或者是由成员函数调用虚函数。C)子类型关系的确立。D)在构造函数中调用虚函数。()派生类中对基类的虚函数进行替换时,派生类中说明的虚函数与基类中的被替换的虚函数之间不要求满足的是()。A)与基类的虚函数具有相同的参数个数。B)其参数的类型与基类的虚函数的对应参数类型相同。C)基类必须定义纯虚函数。D)其返回值或者与基类的虚函数相同,或者都返回指针或引用,并且派生类虚函数所返回的指针或引用的基类型是基类中被替换的虚函数所返回的指针或引用的基类的子类型。()下列关于抽象类说法正确的是:()A)抽象类处于继承类层次结构的较下层。B)抽象类刻画了一组子类的操作通用接口。C)抽象类可以作为类直接使用。D)抽象类可以直接定义对象。()下列关于虚析构函数说法不正确的是()。A)在析构函数前加上关键字virtual,就说明了虚析构函数。B)如果一个基类的析构函数说明为虚析构函数,则它的派生类中的析构函数须用virtual关键字说明后才是虚析构函数。C)说明虚析构函数的目的在于使用delete删除一个对象时,能保证析构函数被正确地执行。D)设置虚函数后,可以采用动态联编的方式选择析构函数。()编译时多态性通过使用()获得。A)继承B)虚函数C)重载函数D)析构函数()可以使用()来阻止基类的成员函数调用派生类中的虚函数。A)成员名限定B)指针C)引用D)关键字virtual()抽象类应该含有()。A)至多一个虚函数B)至多一个虚函数是纯虚函数C)至少一个虚函数D)至少一个虚函数是纯虚函数()一个抽象类可以说明为()。A)指向抽象类对象的指针B)类成员数据C)抽象类的对象D)数组元素()对于抽象类的使用需要注意的地方,下列不正确的说法是:()A)抽象类只能用作其它类的基类,不能建立抽象类对象。B)抽象类不能用作参数类型,函数返回类型或显式转换的类型。C)定义抽象类时至少要定义一个虚函数。D)可以说明指向抽象类的指针和引用,此指针可以指向它的派生类,进而可以实现多态性。()关于动态联编的说法,下列哪个不正确()A)动态联编只能通过指针或引用标识对象来操作虚函数。B)C使用虚函数来指定哪些函数需要用动态联编方式处理。C)动态联编不能实现静态类型检查。D)动态联编能够在运行时根据其类型确认调用哪个函数。()将一个类的成员函数尽可能地设置成虚函数总是有益的,下列设置虚函数必须注意的情况中,哪个是错误的()A)只有类的成员函数才能说明为虚函数。B)静态成员函数不能是虚函数。C)构造函数不能是虚函数。D)析构函数不能是虚函数。()在派生类中重新定义虚函数时必须在()方面与基类保持一致。A)参数个数B)赋值C)参数名字D)操作内容()以下哪个基类中的成员函数表示纯虚函数()。A)virtualvoidvf(int)B)voidvf(int)=C)virtualvoidvf()=D)virtualvoidvf(int){}()通过一个对象调用虚函数时,C系统对该调用采用()。A)动态联编B)静态联编C)不确定是哪种联编D)函数重载参考答案:CCCACDDCBBBADACCDACB二判断正误()函数参数个数和类型都相同,只是返回值类型不同,这不是重载函数。()()虚函数是为实现某种功能而假设的函数,派生类的虚函数定义影响其基类,而基类的虚函数定义不影响其派生类。()()可以在类的内部说明虚函数,这时就可以定义一个虚的内联函数。()()空的虚函数与纯虚函数都没有函数体,因此空的虚函数与纯虚函数在概念上是一样的,只是叫法不一样。()()只要基类的析构函数被说明为虚函数,则派生类的析构函数,无论是否使用virtual进行说明,都自动地成为虚构函数。()()虚函数是一种virtual说明的成员函数。()()抽象类中只能有一个纯虚函数。()()析构函数不能说明为虚函数。()()程序中可以说明抽象类的指针或引用,但是不能说明抽象类的对象。()参考答案:××√×√√××√三分析程序运行结果#include<iostreamh>classbase{public:base(void){fc()}virtualvoidfc(void){cout<<"Inclassbase"<<endl}virtual~base()={cout<<"Destructingbaseobject"<<endl}}classA:publicbase{public:A(void){fc()}voidf(void){fc()}~A(void){fd()}voidfd(void){cout<<"DestructorAobject"<<endl}}classB:publicA{public:B(void){}voidfc(void){cout<<"InclassB"<<endl}~B(void){fc()}voidfd(void){cout<<"DestructorBobject"<<endl}}voidmain(void){Bb*由于B类是A类的子类,A类是base类的子类,所以先调用base类的构造函数,再调用A类和B类的构造函数*cout<<endlbfc()动态联编,调用B类的fc()函数cout<<endlbase*p=newA先调用base类构造函数,再调用A类的构造函数deletep先调用A类的析构函数,再调用base类的析构函数cout<<endl释放对象b所占有的空间,分别调用BAbase类的析构函数}参考答案:InclassbaseInclassbaseInclassBInclassbaseInclassbaseDestructorAobjectDestructingbaseobjectInclassBDestructorAobjectDestructingbaseobject()#include<iostreamh>classCclassA{public:intaA(inti){a=i}virtualvoidprintOn(C)}classB:publicA{public:intbB(inti,intj):A(i){b=j}virtualvoidprintOn(C)}classC{friendvoidA::printOn(C)friendvoidB::printOn(C)inta,b,cpublic:C(inti,intj,intk){a=ib=jc=k}}voidA::printOn(Ct){cout<<"ClassAmembera="<<a<<endlcout<<"ClassCmemberc="<<tc<<endl}voidB::printOn(Ct){cout<<"ClassBmemberb="<<b<<endlcout<<"ClassCmemberc="<<tc<<endl}voidmain(){考查内容:指向基类对象的指针,可以指向其子类对象,使用指针调用成员函数时,根据对象不同而调用基类与其子类中相应的同名函数Aa()Bb(,)Cc(,,)A*pp=ap>printOn(c)p=bp>printOn(c)}参考答案:ClassAmembera=ClassCmemberc=ClassBmemberb=ClassCmemberc=()#include<iostreamh>classbase{public:virtualvoida(){cout<<"a()inbasen"}virtualvoidb(){cout<<"b()inbasen"}virtualvoidc(){cout<<"c()inbasen"}virtualvoidd(){cout<<"d()inbasen"}virtualvoide(){cout<<"e()inbasen"}virtualvoidf(){cout<<"f()inbasen"}}classA:publicbase{public:virtualvoida(){cout<<"a()inAn"}virtualvoidb(){cout<<"b()inAn"}virtualvoidf(){cout<<"f()inAn"}}classB:publicbase{public:virtualvoida(){cout<<"a()inBn"}virtualvoidb(){cout<<"b()inBn"}virtualvoidc(){cout<<"c()inBn"}}classC:publicA,publicB{public:virtualvoida(){cout<<"a()inCn"}virtualvoidd(){cout<<"d()inCn"}}voidmain(){CccA*pa=ccpa>a()C类中有a(),调用pa>b()C类中没有b(),从其基类中寻找,先从A类中找,有则调用,无有则从B类中寻找pa>c()C类中没有c(),从其基类A和B中寻找,先从A类及其基类中找,有则调用若无,则从B类及其基类中寻并调用pa>d()C类中有d(),调用pa>e()C类中没有e(),先从A类及其基类base中寻找,从base中找到,调用pa>f()C类中没有f(),先从A类及其基类base中寻找,在A类中找到并调用考查内容:多态性,指向基类对象的指针可以指向其子类对象这种指针调用函数时先从子类中寻找,如果有则调用,如果没有则从基类中寻找}参考答案:a()inCb()inAc()inbased()inCe()inbasef()inA()#include<stdioh>#include<iostreamh>classA{public:A(){}virtualvoidfunc(){cout<<"ConstructingA"<<endl}~A(){}virtualvoidfund(){cout<<"DestructorA"<<endl}}classB:publicA{public:B(){func()}virtualvoidfunc(){cout<<"ConstructingB"<<endl}voidfun(){func()}~B(){fund()}}classC:publicB{public:C(){}voidfunc(){cout<<"ClassC"<<endl}~C(){fund()}voidfund(){cout<<"DestructorC"<<endl}}voidmain(){Cc分别调用ABC类的构造函数cfun()先从C类中查找,没有则从其直接基类B中查找,找到并调用构造函数调用函数CBA}参考答案:ConstructingBClassCDestructorCDestructorA()#include<iostreamh>#include<stringh>classbase{char*pbase(intsz,char*bptr){p=newcharszstrcpy(p,bptr)cout<<"constructorbase"<<endl}virtual~base(){deletepcout<<"destructorbasen"}}classderive:publicbase{char*pppublic:derive(intsz,intsz,char*bp,char*dptr):base(sz,bp){pp=newcharszstrcpy(pp,dptr)cout<<"constructorderive"<<endl}~derive(){deleteppcout<<"destructorderiven"}}voidmain(){base*px=newderive(,,"base","derive")deletepx}参考答案:constructorbaseconstructorderivedestructorderivedestructorbase四指出下列程序中的错误#include<iostreamh>public:virtualvoidf(){cout<<"A::f()"<<endl}virtualvoidf(){cout<<"A::f()"<<endl}}structB:A{voidf(){cout<<"B::f()"<<endl}voidf(inti){cout<<"B::f()"<<i<<endl}}voidmain(){A*pp=newAp>f()p>f()p=newBp>f()p>f()void(A::*pa)()=A::fp>*pa()deletepBbbf()}五程序设计()定义一个Shape类为抽象类,其中定义一个求面积的纯虚函数,从它派生出三角形(triangle)、矩形(rectangle)、圆(circle)三个子类,每个子类有各自不同的计算面积的公式:三角形(底*高*)、矩形(长*宽)、圆(*R*R)。写一个计算不同几何图形总面积的函数,并在main()函数中定义几个子类对象以验证该函数。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/21

作业(8)

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利