![面向对象程序设计期末复习题_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e79a168d-75d2-4eef-a3da-16c5db0c879f/e79a168d-75d2-4eef-a3da-16c5db0c879f1.gif)
![面向对象程序设计期末复习题_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e79a168d-75d2-4eef-a3da-16c5db0c879f/e79a168d-75d2-4eef-a3da-16c5db0c879f2.gif)
![面向对象程序设计期末复习题_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e79a168d-75d2-4eef-a3da-16c5db0c879f/e79a168d-75d2-4eef-a3da-16c5db0c879f3.gif)
![面向对象程序设计期末复习题_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e79a168d-75d2-4eef-a3da-16c5db0c879f/e79a168d-75d2-4eef-a3da-16c5db0c879f4.gif)
![面向对象程序设计期末复习题_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e79a168d-75d2-4eef-a3da-16c5db0c879f/e79a168d-75d2-4eef-a3da-16c5db0c879f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计期末复习题一、单项选择题1对于类中定义的成员,其隐含访问权限为【B】A)publicB)privateC)staticD)protected2 关于类和对象不正确的说法是【B】A)类是一种类型,它封装了数据和操作B)一个类的对象只有一个C)对象是类的实例D)一个对象必属于某个类3 下面关于对象概念的描述中,【C】是错误的。A)对象代表着正在创建的系统中的一个实体B)对象就是C语言中的结构体变量C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的4 .使用派生类的主要原因是【A】A)提高代码的可重用性B)提高程序的运行效率C)加强类的封装性D)实现数据
2、的隐藏5.有关析构函数的说法不正确的是【A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6.声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【A) 成员函数;构造函数B)复制构造函数;析构函数C)构造函数;析构函数D)析构函数;复制构造D 】是正确的。A)运算符重载可以改变操作数的个数B)运算符重载可以改变函数7. 下列关于运算符重载的描述中,优先级C)运算符重载可以改变结合性D)运算符重载不可以改A】。A)+B)=C)D)->变语法结构8. 能用友元函数重载的运算符是【9当
3、一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【A】A)private成员B)protected成员C)public成员D)友元10.在C+冲,要实现动态联编,必须使用【D】调用虚函数A)类名B)派生类指针C)对象名D)基类指针11若一个类中含有纯虚函数,则该类称为【A】A)抽象类B)纯基类C)派生类D)基类12当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式【B】A)ios:outB)ios:inC)ios:in|ios:outD)ios:binary13.通常拷贝构造函数的参数是【C】。A)某个对象名B)某个对象的成员名C)某个对象
4、的引用名D)某个对象的指针名14 .如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是【C】。A)virtualshow()=0;B)virtualvoidshow();C)virtualvoidshow()=0;D)voidshow=0virtual;15 .C+畸言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是【D】A)面向过程B)复用性C)安全性D)面向对象16下面有关重载函数的说法中正确的是【C】A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表;D)重载函数名可以不同;17设置虚函数的
5、目的是【D】B) 简化代码D) 减少目标代码A)消除二义性C)提高运行效率18 .友元的作用之一是【A】A)提高程序的运行效率B)加强类的封装性C)实现数据的隐藏性D)增加成员函数的种类19 .在C+4,B运算符不能重载。A)+B)?:C)-D)<=20 .在C+畸言程序中,对象之间的相互通信通过BA)继承实现B)调用成员函数实现C)封装实现D)函数重载实现BBBADCDAADABCCDCDABBCCDCADCDDCCBCBABCDAB21 .下列运算符中,在C+皓言中不能重载的是【C】A)*B)>=C):D)/22 .模板的使用是为了【CA)加强类的封装性B)提高代码的运行效率C
6、)提高代码的可重用性D)实现多态性23. 下列表示引用的方法中,】是正确的。已知: int m=10;A)float&t=&m;B)int&y=10;C)int&z;D)int&x=m;24下面对友元函数描述正确的是【C】A)友元函数的实现必须在类的内部定义B)友元函数是类的成员函数C)友元函数破坏了类的封装性和隐藏性D)友元函数不能访问类的私有成员25下面叙述不正确的是【A】A)基类的保护成员在派生类中仍然是保护成员B)基类的保护成员在公有派生类中仍然是保护成员C)基类的保护成员在私有派生类中是私有成员D)对基类成员的访问必须是无二义性26. 对虚函数
7、的调用【D】。A)一定使用动态联编B)必须使用动态联编C)一定使用静态联编D)不一定使用动态联编27. 下列的各类函数中,【C】不是类的成员函数。A)构造函数B)析构函数C)友元函数D)拷贝构造函数28下面对静态数据成员的描述中,正确的是【D】A)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象调用C)静态数据成员不能受private控制符的作用D)静态数据成员可以直接用类名调用29.下面关于友元的描述中,错误的是【D】。A)友元函数可以访问该类的私有数据成员B)一个类的友元类中的成员函数都是这个类的友元函数C)友元可以提高程序的运行效率D)类与类之间的友元关系可以继承30继
8、承机制的作用是【C】A)信息隐藏B)数据封装C)定义新类D)数据抽象31. 在声明类时,下面的说法正确的是【C】。A)可以在类的声明中给数据成员赋初值B)数据成员的数据类型可以是registerC)private,public,protected可以按任意顺序出现D)没有用private,public,protected定义的数据成员是公有成员32. 继承具有【B】,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。A)规律性B)传递性C)重复性D)多样性33在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是【C】A)友元函数
9、B)虚函数C)构造函数D)析构函数34下列关于虚基类的描述中,错误的是【B】A) 设置虚基类的目的是为了消除二义性;B) 虚基类的构造函数在非虚基类之后调用;C)若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D)若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数;35.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则【AA)完全相同B)完全不同以上都不对36 .设置虚基类的目的是【BA)简化程序B)消除二义性少目标代码37 .考虑函数原型void test(int函数调用中,属于不合法调用的是【A) test(5) B)tes
10、t(5,8)D)test(0,0."*");38 .下列关于构造函数的描述中,错误的是【A)构造函数可以设置默认参数;象时自动执行C)构造函数可以是内联函数;载39 .关于成员函数特征的下述描述中,A)成员函数一定是内置函数C)成员函数可以设置参数的默认值C)部分相同,部分不同 D)C)提高运行效率 D)减a,int b=7,char="*");, 下面的 C C)test(6,"#")D B)构造函数在定义类对D)构造函数不可以重【A】是错误的。B)成员函数可以重载D)成员函数可以是静态的40.在C+4,打开一个文件就是将这个文件与
11、一个【B】建立关联;关闭一个文件就取消这种关联。A)类B)流C)对象D)结构二、填空题1.C+用封装性、继承性和是面向对象程序设计的三个主要性质。多态性1.1. 利用成员函数对双目运算符重载,其左操作数为,右操作数为。this指针成员函数参数3 .在一个派生类中,对基类数据成员、子对象数据成员和派生类数据成员的初始化次序是先,后,最后是基类数据成员,子对象数据成员,派生类数据成员4 .任何类中允许有三种访问权限的数据,这三种访问权限分别是、。public、private、protected或公有、私有和保护5 .当类定义中有数据成员为指针时,解决浅拷贝出现的运行错误的方法是。编写拷贝构造函数6
12、 .C+流类库具有两个平行的基类,它们是和ios类。streambuf7 .如果使用public继承基类,其公有成员就会变成派生类的,其保护成员就会变成派生类的,其私有成员公有成员,保护成员,不能继承。8 .成员函数不能直接引用类中说明的非静态成员。静态9 从实现的角度多态可以分为多态和多态。编译时的,运行时的10 .是给对象取一个别名,它引入了对象的同义词。引用11 .类只能作为基类使用,而不能声明它的对象。抽象12 .是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。构造函数13 .为了满足运算符“+”的可交换性,必须将其重载为友元函
13、数14 .C+允许在相同的作用域内以相同的名字定义几个不同实现的函数,称这种同一个函数名多个含义的现象为。函数重载15 .一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的可重用性16 .设置友元函数的目的是为能够访问该类的。私有成员17 .基类的成员不能被派生类的成员访问。私有18 .通过一个对象只能调用它的常成员函数,不能调用其他成员函数。常19 .成员函数没有this指针。静态20.运算符重载仍然保持原来的优先级、和语法结构。结合性21类有两个特殊的成员函数构造函数和析构函数22. 对于含有对象成员的派生类,其构造函数的执行顺序为:先执行:再执行.后执行。先执行基
14、类的构造函数、再执行对象成员的构造函数,后执行派生类的构造函数23. 运算符重载时,其函数名是由构成。operator运算符24. 静态联编支持的多态性称为,也称静态多态性。编译时的多态性25. 一个派生类只有一个基类的情况称为,而有多个直接基类的情况称为。单继承,多继承26. 实现运行时的多态性要使用。虚函数27. 调用析构函数的次序正好与调用构造函数的次序相反。28. 如果一个类至少有一个纯虚函数,那么就称该类为。抽象类29. B类是A类的友元,C类是B类的友元,C类A类的友元。不是三、读程序写结果1.#include<iostream.h>inta=1,3,5,7,9;int
15、&fun(inti)returnai;voidmain()inti;fun(3)=12;for(i=0;i<5;i+)cout«ai«'t'cout«endl;)2.#include<iostream.h>intn=O;int&f(intm)(n+=m;returnn;voidmain()f(10)+=20;coutvv"n="«n«endl;3.#include<iostream.h>classMpublic:M(inta=0,intb=0)x=a;y=b;in
16、tgetx()returnx;intgety()returny;private:intx,y;voidmain()Mop1(5,6);inti,j;i=op1.getx();j=op1.gety();cout<<"i="<<i<<"j="<<j<<endl;4.#include<iostream.h>voidmain()a+0inta10=9,8,7,6,5,4,3,2,1,*p=a+5;cout<<*-p<<endl;*(p+3)+=2;cout<&l
17、t;p3<<endl;5.#include<iostream.h>#include<stdlib.h>classtimerpublic:timer()seconds=0;timer(intt)seconds=t;timer(intmin,intsec)seconds=min*60+sec;intgettime()returnseconds;private:intseconds;voidmain()timera,b(10),c(1,10);cout<<"seconds1="<<a.gettime()<<e
18、ndl;cout<<"seconds2="<<b.gettime()<<endl;cout<<"seconds3="<<c.gettime()<<endl;6. (有static,因此第二次调用时不再执行sample函数。)#include<iostream.h>classsamplepublic:sample()cout<<”Constructor”<<endl;voidfn(inti)staticsamplec;cout<<”i=”
19、<<i<<endl;voidmain()fn(10);fn(20);7.#include<iostream.h>voidmain()intnum=31246;longp=1;dop*=num%10;num/=10;while(num);cout<<”p=”<<p<<endl;8.#include<iostream>usingnamespacestd;classTeststaticintcount;public:Test()+count;cout<<"对象数量="<<c
20、ount<<endl;Test()-count;cout<<"对象数量="<<count<<endl;intTest:count=0;voidmain()Testt2;9.#include<iostream.h>classAinta;public:voidseta(intx)a=x;voidshowa()cout<<a<<endl;classBintb;public:voidsetb(intx)b=x;voidshowb()cout<<b<<endl;classC:p
21、ublicA,privateBprivate:intc;public:voidsetc(intx,inty,intz)c=z;seta(x);setb(y);voidshowc()cout<<c<<endl;voidmain()Cc;c.seta(1);c.showa();c.setc(1,2,3);c.showc();10.#include<iostream.h>#include<string.h>classgirlpublic:girl(char*n,intd)name=newcharstrlen(n)+1;strcpy(name,n);ag
22、e=d;friendvoiddisp(girl&);girl()deletename;private:char*name;intage;voiddisp(girl&x)cout<<"Girl'snameis"<<<<",age:"<<x.age<<endl;voidmain()girle("ChenXingwei",16);disp(e);11.#include<iostream>usingnamespacestd;classB
23、ookintnum,price;public:Book(inta=0,intb=0)num=a;price=b;voidshowMoney()cout<<num*price<<endl;voidmain()Bookb=Book(1,2),Book(3,6),Book(8,9);Book*p;inti;p=&b2;for(i=0;i<3;i+,p-)p->showMoney();12.#include<iostream.h>classsampleintn;public:sample()sample(intm)n=m;int&oper
24、ator-(int)n-;returnn;voiddisp()cout<<"n="<<n<<endl;voidmain()samples(10);(s-)+;s.disp();13.#include<iostream.h>intf(int);intmain()inti;for(i=0;i<5;i+)cout<<f(i)<<""return0;intf(inti)staticintk=1;for(;i>0;i-)k+=i;returnk;14.#include<ios
25、tream.h>classsampleint x;public:sample()voidsetx(inti)x=i;friendintfun(sampleb,intn)intm=0;for(inti=0;i<n;i+)if(bi.x>m)m=bi.x;returnm;voidmain()samplea10;intarr=90,87,42,78,97,84,60,55,78,65;for(inti=0;i<10;i+)ai.setx(arri);cout<<"theresultis"<<fun(a,10)<<endl
26、;四、程序填空1. 下面程序的功能是定义类sample,并输出其数据成员,请填空:#include<iostream.h>【 class sample 】 int m;【 static int n;/定义类sample/定义整型静态数据成员npublic:sample(inti)n+;m=i;void disp()/成员函数disp()的函数首部cout<<"m="<<m<<"n"<<"n="<<n<<endl;/ 静态数据成员 n 赋初值为 0【in
27、tsample:n=0;】voidmain()samples1(1),s2(2);s1.disp();s2.disp();2.#include<iostream>usingnamespacestd;classB1public:B1(intb)b1=b;voidshow()cout<<b1<<endl;protected:intb1;classB2public:B2(intc)b2=c;voidshow()cout<<b2<<endl;protected:intb2;classB3:publicB1,publicB2public:, /
28、 构造函数的函B3(intbb,intcc,intdd):【数体b3=dd;B1:b1=bb;B2:b2=b2;构造函数的函数体构造函数的函数体/voidsetall(intx,inty,intz)b1=x;b2=y;b3=z;voidshow()cout<<b1<<""<<b2<<""<<b3<<endl;private:intb3;voidmain()B3k(1,2,3);k.show();k.setall(2,3,4);/重新为派生类对象的数据成员赋值k.show();3.#i
29、nclude<iostream.h>classDatepublic:Date()/无参构造函数Date(inty,intm,intd)year=y;month=m;day=d;/函数体voidprint()const;private:intyear,month,day;/数据成员;voidDate:print()constcout<<year<<”<<month<<”<<day<<endl;/输出所有数据成员intmain()Datenational_day(1949,10,1);national_day.pr
30、int();return0;4. 下面程序的功能是重载“-”运算符,使对象s的数据成员n值减1。#include<iostream.h>classsampleintn;public:sample(intm)n=m;intoperator-(int)n-;returnn;/函数的返回值voiddisp()cout<<"n="<<n<<endl;voidmain()samples(10);s-;/运算符的重载函数调用5. disp();/调用成员函数disp()输出数据成员的值五、程序改错1. 在括号里写出正确的。#include
31、<iostream.h>classVehicleprotected:intweight;public:Vehicle(intw)weight=w;voidshow()cout<<"classVehicle"<<endl;classBoat:publicVehicle/【】public:Boat(intwb):Vehicle(wb)voidshow()cout<<"我能在水中游!"<<endl;classPlane:publicVehicle/【】public:Plane(intwp):Vehic
32、le(wp)voidshow()cout<<"我能在天上飞!"<<endl;classAmphibian:publicBoat,publicPlanepublic:Amphibian(intwa):Boat(wa),Plane(wa)/【】voidshow()cout<<"我能在水中游又能在天上飞!"<<endl;voidmain()Amphibiana;/【】a.show();2. 下面程序定义类point,并输出其数据成员的值。#include<iostream.h>classpointpu
33、blic:/【private】intx,y;private:/【public】point(intxx,yy)/【intyy】x=xx;y=yy;voiddisp()cout<<x<<""<<y<<endl;voidmain()pointp1(3,4);p1.disp();/错误的为cout<<x<<y<<endl;3.#include<iostream.h>classMinta,b;public:M()a=b=0;M(intaa,intbb)a=aa,b=bb;/ 【】Moper
34、ator+(intx);/Moperator-(Mx);/voidOutB()cout<<a<<''<<b<<endl;Moperator+(M&x)Mr;r.a=a+x.a;r.b=b+x.b;returnr;MM:operator-(M&x)intr;r.a=a-x.a;r.b=b-x.b;returnr;voidmain()Mx(3,5),y(8,4),z1,z2;z1=x+y;z2=x-y;z1.OutB();z2.OutB();4. 下列程序定义一个时钟类,并能设置和显示时间,要求ShowTime()函数
35、为内联函数。#include<iostream.h>classClockpublic:SetTime(intNewH=0,intNewM=0,intNewS=0);/【】voidShowTime();private:intHour,Minute,Second;voidClock:SetTime(intNewH,intNewM,intNewS)Hour=NewH;Minute=NewM;Second=NewS;voidClock:ShowTime()/【】cout<<Hour<<":"<<Minute<<"
36、:"<<Second<<endl;intmain()ClockmyClock;cout<<"Firsttimesetandoutput:"<<endl;SetTime();/【】myClock.ShowTime();cout<<"Secondtimesetandoutput:"<<endl;myClock.SetTime(8;30;30);/【】myClock.ShowTime();return0;六、编程题1. 编程序完成以下要求:定义一个日期类Date,该类对象存放一个
37、日期,并实现以下要求:1) voidGetDate();/取日期值,格式如“2009年11月4日”2) voidSetDate(inty,intm,intd);/设置日期值3) 在主函数中对日期对象作以下定义:Dated1(2009,11,4);/用所给日期定义一个日期变量Dated2;/定义一个日期对象Dated3(d1);/用已有的日期对象构造一个新对象2.设计一个立方体类box,它能提供立方体的体积和表面积,并采用相应数据进行测试。要求:1) box类包含3个私有数据成员,即立方体边长a、volume(体积)、area(立方体表面积)2) 两个构造函数以及成员函数seta()(设置立方体
38、边长)3) getvolume()和getarea()用于计算立方体的体积和表面积4) disp()用于输出计算结果。#include<iostream.h>classboxpublic:box(intb)a=b;box()voidseta(inti)a=i;voidgetvolume()volume=a*a*a;voidgetarea()area=a*a*6;voiddisp()cout<<"体积是"<<volume<<""<<"面积是"<<area<&l
39、t;endl;private:inta,volume,area;voidmain()boxa1(3);a1.getarea();a1.getvolume();a1.disp();boxa2;a2.seta(4);a2.getarea();a2.getvolume();a2.disp();3. 设计描述小汽车(car)、公共汽车(bus)、和卡车(truck)的系统类,提取其中的共性建立基类为抽象类,个类能分别显示不同车型的载客人数和载重量,测试这个类。#include<iostream.h>classBasepublic:virtualvoiddisplay()=0;classca
40、r:publicBaseprivate:intnum,weight;public:car(intn,intw)num=n,weight=w;voiddisplay()cout<<"car:"<<endl;cout<<”载客人数:"<<num<<""<<"重量:"<<weight<<endl;classbus:publicBaseprivate:intnum,weight;public:bus(intn,intw)num=n,wei
41、ght=w;voiddisplay()cout<<"bus:"<<endl;cout<<”载客人数:"<<num<<""<<"重量:"<<weight<<endl;voidfun(Base*p)p->display();intmain()Base*q;cara(12,23);busb(21,32);q=&a;fun(q);q=&b;fun(q);4. 声明一个employee类,其中包括姓名、地址、邮编和电话
42、属性。1) 使用构造函数和构造函数重载完成数据的初始化;2) Chang_name()l数,改变对象的姓名属性;3) Display()函数显示;4) 测试这个类。#include<iostream>#include<cstring>usingnamespacestd;classemployeepublic:employee()strcpy(name,"Lijiawei");strcpy(addr,"TianJin");postcard=300380;tele=4817255;employee(charname2,charaddr2,intcard,intphone)strcpy(name,name2);strcpy(addr,addr2);postcard=card;tele=phone;voidchange_name(charname3)strcpy(name,name3);voiddisplay()cout<<"姓名是:"<<na
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《策略组态MCGS》课件
- 《品读林黛玉》课件
- 《COS治疗的指南》课件
- 2025年浙江货运从业资格证题目答案大全及解析
- 微课教学交流平台的设计与构建
- 年度合作成果回顾模板
- 咨询项目半年汇报模板
- 小学音乐合唱教学中开展德育教学的方法研究
- 小区道路工程冬季施工方案
- 实施国学教育必要性的策略培养论文
- 《工程款纠纷》课件
- 中建地下管廊竖井及矩形顶管专项施工方案
- 第7课互联网应用协议 课件 2023-2024学年浙教版(2023)初中信息技术七年级上册
- 关于新能源汽车的论文1500字
- 诊所规章制度汇编全套
- 中国音乐学院音乐基础知识(四级)(基本乐科)备考试题库(含答案)
- 学校校长思政课讲稿共五篇
- 有限公司事业合伙人管理办法
- 演示文稿国库集中支付总流程图
- 空调维保服务项目质量保障措施
- 火力发电厂水、汽试验方法(标准规程汇编)
评论
0/150
提交评论