面向对象程序设计复习资料_第1页
面向对象程序设计复习资料_第2页
面向对象程序设计复习资料_第3页
面向对象程序设计复习资料_第4页
面向对象程序设计复习资料_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,_是错误的。(B)A.对象代代表着正正在创建建的系统统中的一一个实体体B.对对象就是是C语言言中的结结构体变变量C.对象是是一个状状态和操操作(或或方法)的封装装体D.对对象之间间的信息息传递是是通过消消息进行行的2. 继承承机制的的作用是是: (C)A信息隐隐藏B数数据封装装C定定义新类类D数数据抽象象3.有关析析构函数数的说法法不正确确的是_(D)A.析构函函数有且且只有一一个B.析析构函数数无任何何函数类类型C.析析构函数数没有形形参D.析构函函数不能能是虚函函数4.友元的的作用之之一是_(A)A.提高程程序的运运行

2、效率率B.加加强类的的封装性性C.实现数数据的隐隐藏性D.增增加成员员函数的的种类5.通常拷拷贝构造造函数的的参数是是_。(C)A.某个对对象名B.某某个对象象的成员员名C.某某个对象象的引用用名D.某某个对象象的指针针名6.如果在在基类中中将shhow声声明为不不带返回回值的纯纯虚函数数,正确确的写法法是_。(CC)A.virrtuaal sshoww()=0;B.vvirttuall vooid shoow();C.virrtuaal vvoidd shhow()=00;D.vvoidd shhow=0 vvirttuall;7.下面关关于友元元的描述述中,错错误的是是_。(DD)A.友元

3、函函数可以以访问该该类的私私有数据据成员B.一个类类的友元元类中的的成员函函数都是是这个类类的友元元函数C.友元可可以提高高程序的的运行效效率D.类与类类之间的的友元关关系可以以继承8.在C+中,_运运算符不不能重载载。(BB)A. +B.?:C.-D.=C.:D./33下面面对友元元函数描描述正确确的是_CC_ A.友元元函数的的实现必必须在类类的内部部定义B.友友元函数数是类的的成员函函数C.友元元函数破破坏了类类的封装装性和隐隐藏性D.友友元函数数不能访访问类的的私有成成员34下面面叙述不不正确的的是_A_ A.基类类的保护护成员在在派生类类中仍然然是保护护成员B.基类类的保护护成员在在

4、公有派派生类中中仍然是是保护成成员C.基类类的保护护成员在在私有派派生类中中是私有有成员D.对基基类成员员的访问问必须是是无二义义性35下面面对静态态数据成成员的描描述中,正正确的是是_D_ A.静态态数据成成员可以以在类体体内进行行初始化化B.静态态数据成成员不可可以被类类的对象象调用C.静态态数据成成员不能能受prrivaate控控制符的的作用D.静态态数据成成员可以以直接用用类名调调用36在CC+类类语言体体系中,不不能被派派生类继继承的有有_BA转换函函数B构构造函数数C虚虚函数D静静态成员员函数37在类类的定义义中,用用于为对对象分配配内存空空间,对对类的数数据成员员进行初初始化并并

5、执行其其他内部部管理操操作的函函数是_C_ A.友元元函数B.虚虚函数C.构构造函数数D.析析构函数数38下列列关于虚虚基类的的描述中中,错误误的是_B_ A.设置置虚基类类的目的的是为了了消除二二义性;B.虚基基类的构构造函数数在非虚虚基类之之后调用用;C.若同同一层包包含多个个虚基类类,这些些基类的的构造函函数按照照它们的的次序调调用;D.若虚虚基类由由非基类类派生而而来,则则仍然先先调用基基类构造造函数,再再用派生生类的构构造函数数;39考虑虑函数原原型vooidtesst(iinta,iint b=77,chhar=*),下下面的函函数调用用中,属属于不合合法调用用的是_CC_A. t

6、testt(5)B.tesst(55,8)C.ttestt(6,#)D.tesst(00,0.*); 440下列列关于构构造函数数的描述述中,错错误的是是_D_ A.构造造函数可可以设置置默认参参数;B.构构造函数数在定义义类对象象时自动动执行C.构造造函数可可以是内内联函数数;D.构构造函数数不可以以重载41.在重重载一个个运算符符时,如如果其参参数表中中有一个个参数,则则说明该该运算符符是( )。 D A一元成成员运算算符 BB二元元成员运运算符 C一元友友元运算算符 D选选项B和和选项CC都可能能 42在公公有派生生情况下下,有关关派生类类对象和和基类对对象的关关系,下下列叙述述不正确确

7、的是( )。 CA派生类类的对象象可以赋赋给基类类的对象象 BB派生生类的对对象可以以初始化化基类的的引用 C派生类类的对象象可以直直接访问问基类中中的成员员 DD派生生类的对对象的地地址可以以赋给指指向基类类的指针针 43下面面关于虚虚函数的的描述,错错误的是是( )。 BB A在成员员函数声声明的前前面加上上virrtuaal修饰饰,就可可把该函函数声明明为虚函函数 B基类中中说明了了虚函数数后,派派生类中中对应的的函数也也必须说说明为虚虚函数 C虚函数数可以是是另一个个类的友友元函数数,但不不能是静静态成员员函数 D基类中中说明的的纯虚函函数在其其任何派派生类中中都必须须实现44定义义派

8、生类类时,若若不使用用关键字字显示地地规定采采用何种种继承方方式,则则默认方方式为( )。 AA私有继继承 BB非私私有继承承 C保护继继承 DD公有有继承 45.有如如下程序序: #inclludee usingg naamesspacce sstd; classs ONNE int cc; publiic: ONE():c(00)ccoutt11; ONE(iint n):c(nn)ccoutt22; ; classs TWWO ONE oonell; ONE oone22; publiic: TWO(iint m):onee2(mm)ccoutt33; ; int mmainn() TW

9、O tt4() returrn 00 运行时的输输出结果果是( )。 C A3 B23 C1233 D2133 46.关于于静态数数据成员员的描述述中正确确的是DDA)类的静静态数据据成员不不是类的的所有对对象共享享的数据据BB)类的的静态数数据成员员不能被被类的成成员函数数调用C)类的静静态数据据成员不不能被类类的构造造函数调调用 D)类的静静态数据据成员必必须进行行初始化化47下面正正确的是是,在父类类中的访访问属性性访问修修饰符在在子类中中的访问问属性()CA)ppubllic,priivatte不能能直接访访问 BB)prroteect,pubblicc,pubbliccC)ppriv

10、vatee,pubblicc不能直直接访问问 D)prootecct,priivatte,prootecct48类A是是类B的的友元,类类B是类类C的友友元,则则下列说说法正确确的是DDA)类类B是类类A的友友元B)类类C是类类A的友友元C)类类A是类类C的友友元D)以以上都不不对49下列关关于构造造函数说说法不正正确的是是CA)构构造函数数必须与与类同名名 B)构造函函数可以以省略不不写C)构造函函数必须须有返回回值 DD)在构构造函数数中可以以对类中中的成员员进行初初始化50.类的的析构函函数的作作用是DDA)一一般成员员函数的的初始化化 B)类类的初始始化C)对象的的初始化化D)删除类类

11、创建的的对象51.下列列说法正正确的是是BA)内内联函数数在运行行时是将将该函数数的目标标代码插插入每个个调用该该函数的的地方B)内内联函数数在编译译时是将将该函数数的目标标代码插插入每个个调用该该函数的的地方C)类类的内联联函数必必须在类类体内定定义D)类类的内联联函数必必须在类类体外通通过加关关键字iinliine定定义52.下面面对静态态数据成成员的描描述中,正正确的是是DA)静静态数据据成员可可以在类类体内进进行初始始化B)静静态数据据成员不不可以被被类的对对象调用用C)静静态数据据成员不不能受pprivvatee控制符符的作用用D)静态数数据成员员可以直直接用类类名调用用二、知识点点

12、1.实现运运行时的的多态性性要使用用虚函数数。2.如果一一个类至至少有一一个纯虚虚函数,那那么就称称该类为为抽象类类。3. 运算算符重载载不能改改变操作作符的个个数、运运算符的的优先级级、运算算符的结结合性和和运算符符的语法法结构。4. 构造造函数是是一种特特殊的成成员函数数,它主主要用来来为对象象分配内内存空间间,对类类的数据据成员进进行初始始化并执执行对象象的其他他内部管管理操作作。5. 静态态成员函函数不能能直接引引用类中中说明的的非静态态成员。6. 引用用是给对对象取一一个别名名,它引引入了对对象的同同义词。7.设置友友元函数数的目的的是为能能够访问问该类的的私有成成员。8.运算符符重

13、载仍仍然保持持原来的的优先级级、结合合性和语语法结构构。9.基类的的私有成员员不能被被派生类类的成员员访问。10.静态态联编支支持的多多态性称称为编译译时的多多态性,也也称静态态多态性性。11.任何何类中允允许有三三种访问问权限的的数据,这这三种访访问权限限分别是是pubblicc、prrivaate、pprottectted。12.为了了满足运运算符“+”的可交交换性,必必须将其其重载为为友元函函数。13.对于于含有对对象成员员的派生生类,其其构造函函数的执执行顺序序为:先先执行基基类的构构造函数数、再执执行对象象成员的的构造函函数,后后执行派派生类的的构造函函数。14.利用用成员函函数对双

14、双目运算算符重载载,其左左操作数数为thhis指指针指出出的对象象,右操操作数为为成员函函数参数数。15.C+允许许在相同同的作用用域内以以相同的的名字定定义几个个不同实实现的函函数,称称这种同同一个函函数名多多个含义义的现象象为函数数重载。通过使用nnew和和delletee两个运运算符进进行的分分配为动动态存储储分配。当类定义中中有数据据成员为为指针时时,解决决浅拷贝贝出现的的运行错错误的方方法是编编写拷贝贝构造函函数。如果使用pprottectted继继承基类类,其公公有成员员就会变变成派生生类的保保护成员员,其保保护成员员就会变变成派生生类的保保护成员员,其私私有成员员不能继继承一个函

15、数功功能不太太复杂但但要求被被频繁调调用,应应定义为为内联函函数。抽象类只能能作为基基类使用用,而不不能声明明它的对对象。 构造函数可可以重载载,析构构函数不不可以重载载。静态成员函函数没有有thiis指针针。类有两个特特殊的成成员函数数构造函函数和析析构函数数。在表达式xx+y*z中,+是作为为成员函函数重载载的运算算符,*是作为为非成员员函数重重载的运运算符。其其中opperaatorr+有一一个参数数,opperaatorr*有两两个参数数。一个派生类类只有一一个基类类的情况况称为单单继承,而而有多个个直接基基类的情情况称为为多继承承。调用析构函函数的次次序正好好与调用用构造函函数的次次

16、序相反反。27. 非非成员函函数应说说明为类类的友元元函数才才能访问问这个类类的prrivaate成成员。28. 通通过使用用neww和deelette两个个运算符符进行的的分配为为动态态存储分分配。29如果果类B继继承了类类A,则则称类AA为类BB的基类类,类BB称为类类A的派派生类30. 表表达式ooperratoor+(x,yy)还可可以表示示为x+y 。31 C+语言言中的多多态性分分为编译译时的多多态性和和运行时时的多态态性。 32将x+y*zz中的+用用成员函函数重载载,*用友友元函数数重载,应解释为xx. ooperratoor+(opeerattor*(y,z)33如果要要把返

17、回回值为vvoidd的函数数A声明明为类BB的友元元函数,则则应在类类B的定定义中加加入的语语句是ffrieend voiid AA( );34派生类类的成员员一般分分为两部部分,一一部分是是从基类类继承的的成员,另另一部分分是自己己定义的的新成员员。35继承的的方式有有公有继继承、私私有继承承和保护护继承33种。三、读程序序写结果果1.写出出下列程程序的运运行结果果 #inccludde classs saampllepubliic:samplle()coutt”helllo”eendll;void fn(intt i)stattic sammplee c;cout”j=”iieendll;

18、void maiin()fn(220);fn(300);hellooj=20j=302. 写出出下列程程序的运运行结果果( )#inccludde int n=00;int & ff(innt mm)n+=m;returrn nn;void maiin()f(22)+=220;cout”n=”nneendll;n=423.写出出下列程程序的运运行结果果( )#inclludeeclasss Apubliic:int numm;A(innt ii)nnum=i;A(A &a)nuum=aa.nuum;nnum+=15;voidd prrintt()couutnummeendll;void mai

19、in()A a(8);A b(aa);a.prrintt();b.prrintt();8234. 写出出下列程程序的运运行结果果( )#inccludde void maiin()int aa100=11,10,9,88,7,6,55,4,3,*p=a+55;cout*-penndl;*(p+33)+=5;coutp3enndl;795. 写出出下列程程序的运运行结果果( )#inccludde classs A innt aa;publiic:voidd seeta(intt x)a=x;voidd shhowaa()couutaenddl;classs B innt bb;publiic:

20、voidd seetb(intt x)b=x;voidd shhowbb()couutbenddl;classs C:pubblicc A,priivatte BBprivaate:int c;publiic:voidd seetc(intt x,intt y,intt z) c=z; seeta(x); seetb(y);voidd shhowcc()couutcenddl;void maiin() C c; c.ssetaa(8); c.sshowwa(); c.ssetcc(4,6,77); c.sshowwc();876. 写出出下列程程序的运运行结果果( )#inccludde cl

21、asss saamplle intt n;publiic:sampple()sampple(intt m)n=m;int &opperaatorr-(intt) n-; reeturrn nn;voidd diisp()ccouttn=nneendll;void maiin() sammplee s(18); (s-)+; s.ddispp();n=187.写出出下列程程序的运运行结果果( )#inccludde classs saamplle intt x;publiic:sampple()voidd seetx(intt i)x=i;frieend intt fuun(ssampple b

22、,innt nn) iint m=00; ffor(intt i=0;iim) m=bii.xx; rretuurn m;void maiin() saamplle aa100; innt aarr=9,88,4,7,555,332,220,115,668,665; foor(iint i=00;i10;i+) aai.seetx(arrri); coouttthe ressultt iss fuun(aa,100)enddl;the rresuult is 688下列程序序的输出出结果为为 ( )#inclludeevoid funn(innt xx=0,intt y=0)couttxxyy

23、eendll;void maiin()fun(18);1809. 写出出下列程程序的运运行结果果 ( )#inclludeeclasss M publlic: M(iint a=00,innt bb=0) xx=a;y=bb; intt geetx() retturnn x; intt geety() retturnn y; privvatee: intt x,y; ; voidd maain() M oop1(22,18); intt i,j; i=oop1.gettx(); j=oop1.getty(); couutj=ii=jenddl; j=22ii=18810写出下下列程序序的运行行

24、结果 ( )#inclludeeclasss Caatint numm,agge;publiic:Cat(intt i,intt j)nuum=ii;agge=jj;Cat(Catt &cc)nnum=c.nnum; agge=cc.agge;nnum+;voidd prrintt()couutnumm,aggeenddl;void maiin()Cat c1(33,12);Cat c2(c1);c2.pprinnt();34,12211写出出下列程程序的运运行结果果( )#inclludeeusingg naamesspacce sstd;classs Teeststattic intt c

25、oountt;publiic:Testt()+ccounnt;couut对象象数量=couuntenndl;Tesst()-ccounnt;couut对象象数量=couuntenndl;int TTestt:ccounnt=00;void maiin()Testt t3;对象数量=1对象数量=2对象数量=3对象数量=2对象数量=1对象数量=012写出出下列程程序的运运行结果果 ( )#inclludee#inclludeeclasss giirl publlic: girrl(ccharr *nn,innt dd) naame=neww chharstrrlenn(n)+1; sttrcppy

26、(nnamee,n); agge=dd; friiendd vooid dissp(ggirll &); giirl() deelette naame; privvatee: chaar *namme; intt agge; ;void dissp(ggirll &xx)couttGirrls nnamee iss x.namme,aage:x.aageenndl; voidd maain() giirle(李华,28); diisp(e); Girls nnamee iss李华,aage:2813. 写写出下列列程序的的运行结结果 ( )#inclludeeusingg naamesspac

27、ce sstd;classs Boookint numm,prricee;publiic:Bookk(innt aa=0,intt b=0)numm=a;priice=b;voidd shhowMMoneey()cooutnuum*ppricceenddl;void maiin()Bookk b=Boook(22,8),Boook(5,110),Boook(113,220); Bookk *pp;int i;p=&bb2;for(i=00;ishoowMooneyy();260501614. 写写出下列列程序的的运行结结果 ( )#inclludee int ff(innt); int mma

28、inn() intt i;for(i=00;i5;ii+) couutf(ii)0;ii-) k +=i*2; retuurn k; 3 5 111 223 4315.有如如下程序序vooid maiin() ccharr chh25=69337,82254,*p22;intt i,j,ss=0;forr(i=0;ii2;i+)pi=chi;forr(i=0;ii0;j+=2)s=110*ss+pij-0;couut ss; 该程序序的输出出结果是是: 6388516.以下下程序的的输出结结果是lonng ffun( innt nn) llongg s;if(n=1|n=2)ss=2;elss

29、e ss=n-funn(n-1);retturnn s; voiid mmainn() coout funn (33); 117以下程程序的输输出结果果是。voiid ffun() sstattic intt a=0;a+=2;couut aa ; voiid mmainn() iint cc;forr(ccc=1;cc4;ccc+)funn();couut eendll;2 4 66四、程序改改错1.下面程程序定义义类poointt,并输输出其数数据成员员的值。根据注释写出正确的语句。#inccludde classs poointtpubliic: /正正确的为为priivatte:int

30、 x,yy;privaate:/正正确的为为pubblicc:pointt(innt xxx,yyy) /正正确的为为poiint(intt xxx,innt yyy)x=xx;y=yyy;voidd diisp()couutx yenndl;void maiin() poiint p1(3,44); couutxyenddl; /正确确的为pp1.ddispp();2.下列程程序定义义一个时时钟类,并能设设置和显显示时间间,要求ShhowTTimee()函函数为内内联函数数。#inccludde classs CClocckpubllic:voidd SeetTiime(intt NeewH

31、=0,iint NewwM=00,innt NNewSS);/ 正正确的为为voiid SSetTTimee(innt NNewHH=0,intt NeewM=0,iint NewwS=00)voidd ShhowTTimee();privaate:int Houur,MMinuute,Seccondd;void Cloock:SeetTiime(intt NeewH,intt NeewM,intt NeewS)Hourr=NeewH;Minnutee=NeewM;Seccondd=NeewS;void Cloock:ShhowTTimee()/正正确的为为inllinee vooid Clo

32、ock:ShhowTTimee() cooutHoour:Minnutee:Seeconndenddl;int mmainn() Cllockk myyCloock; couutFiirstt tiime sett annd ooutpput:enddl; SettTimme();/正正确的为为myCClocck.SSetTTimee(); myCClocck.SShowwTimme(); couutSeeconnd ttimee seet aand outtputt:enndl; SettTimme(88,300,300);/ 正确的的为 mmyCllockk.SeetTiime(8;30;

33、30); myCClocck.SShowwTimme(); retturnn 0;3. 下列列程序定定义了一一个多继继承的派派生类,根根据注释释找出错错误写出出正确的的语句。虚基类与最派生类#inclludeeclasss Veehiccleproteecteed:int weiightt;publiic:Vehiiclee(innt ww)wweigght=w;voidd shhow()ccoutt cllasss Veehiccle enddl;classs Booat: puubliic VVehiiclee/正正确的为为virrtuaal ppubllic Vehhicllepubli

34、ic:Boatt(innt wwb):Vehhiclle(wwb)voidd shhow()ccoutt 我能能在水中中游! enddl;classs Pllanee: ppubllic Vehhiclle/正正确的为为virrtuaal ppubllic Vehhicllepubliic:Planne(iint wp):Veehiccle(wp)voidd shhow()ccoutt 我能能在天上上飞! enddl;classs Ammphiibiaan: pubblicc Booat,pubblicc Pllaneepubliic:Amphhibiian(intt waa) :Boaat(

35、wwa),Plaane(wa)/正正确的为为:Veehiccle(wa),Booat(wa),Pllanee(waa)voidd shhow()ccoutt 我能能在水中中游又能能在天上上飞! enddl;void maiin()Amphhibiian a; /正正确的为为Ampphibbiann a(23880); 实参参任意正正数a.shhow();4. 下列列程序定定义了运运算符重重载,根根据注释释找出错错误写出出正确的的语句。运算符重载#inclludeeclasss Mint a,bb;publiic:M()a=bb=0; M(iint aa,intt bbb)aa=aaa,b=bb

36、; M ooperratoor + (intt x); /正确确的为 (M &x);M opperaatorr - (M x); /正确确的为 (M &x);voidd OuutB()coouta benddl;M opeerattor +(MM& xx) /正确确的为 M M:opeerattor +(MM& xx)M rr;r.a=a+xx.a;r.b=b+xx.b;retuurn r;M M:opeerattor -(MM& xx)intt r; /正确确的为M r r.aa=a-x.aa; r.bb=b-x.bb; retturnn r;void maiin()M xx(3,5),y(

37、88,4),z11,z22;z1=xx+y;z2=x-yy;z1.OOutBB();z2.OuttB();5根据注释释找出错错误写出出正确的的语句classsCommmonnBasse pubblicc:intt x; ;classs DerriveeCommmonnA:pubblicc CommmonnBasse /正确确的为claass DerriveeCommmonnA:ppubllic CommmonnBasse ppubllic:intt y; ;classsDerriveeCommmonnB:ppubllicCCommmonBBasee pubblicc:intt z; ;clas

38、ssOveerlaappiing:pubbliccDerriveeCommmonnA;ppubllicDDeriiveCCommmonBB/正确确的为claass Oveerlaappiing:pubblicc DerriveeCommmonnA,pubblicc DerriveeCommmonnB pubblicc:voiidDiispllay() ccouttValluessaree:enndl;intt maiin() OOverrlapppinngovv;ov.x=11; /正确确的为ov. DerriveeCommmonnA:x=11ov.y=22;ov.z=33;ov.Dissplaay();retturnn0; 五、编程题题1. 编写写一个程程序,声明抽抽象基类类Shaape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上3者的面积,3个图形的数据在定义对象时给定。classs Shhapee innt nn;publiic:virttuall dooublle aareaa()cconsst=00;classs Ciirclle:ppubllic Shaape publiic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论