理学面向对象程序设计期末复习题.doc

上传人:文库蛋蛋多 文档编号:2386032 上传时间:2023-02-17 格式:DOC 页数:39 大小:92.50KB
返回 下载 相关 举报
理学面向对象程序设计期末复习题.doc_第1页
第1页 / 共39页
理学面向对象程序设计期末复习题.doc_第2页
第2页 / 共39页
理学面向对象程序设计期末复习题.doc_第3页
第3页 / 共39页
理学面向对象程序设计期末复习题.doc_第4页
第4页 / 共39页
理学面向对象程序设计期末复习题.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《理学面向对象程序设计期末复习题.doc》由会员分享,可在线阅读,更多相关《理学面向对象程序设计期末复习题.doc(39页珍藏版)》请在三一办公上搜索。

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)加强类的封装

2、性D)实现数据的隐藏5. 有关析构函数的说法不正确的是【 D 】A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6. 声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【 C 】A)成员函数;构造函数B)复制构造函数;析构函数C)构造函数;析构函数D)析构函数;复制构造函数7. 下列关于运算符重载的描述中,【 D 】是正确的。A)运算符重载可以改变操作数的个数B)运算符重载可以改变优先级C)运算符重载可以改变结合性D)运算符重载不可以改变语法结构8. 能用友元函数重载的运算符是【 A

3、 】。A)+B)=C)D)-9当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【 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.通常拷贝构造函数的参数是【

4、C 】。A)某个对象名B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名14.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是【 C 】。A)virtual show()=0;B)virtual void show();C)virtual void show()=0;D)void show=0 virtual;15C+语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是 【 D 】A) 面向过程B) 复用性C) 安全性D) 面向对象16下面有关重载函数的说法中正确的是【 C 】 A)重载函数必须具有不同的返回值类型;B)重载函数形参个

5、数必须不同; C)重载函数必须有不同的形参列表;D)重载函数名可以不同;17设置虚函数的目的是【 D 】A)消除二义性B)简化代码C)提高运行效率D)减少目标代码18.友元的作用之一是【 A 】A)提高程序的运行效率B)加强类的封装性C)实现数据的隐藏性D)增加成员函数的种类19.在C+中,【 B 】运算符不能重载。A) +B)?:C)-D)=C):D)/22.模板的使用是为了【C 】。A)加强类的封装性B)提高代码的运行效率C)提高代码的可重用性D)实现多态性23.下列表示引用的方法中,【 D 】是正确的。已知:int m=10; A) float &t=&m;B)int &y=10;C)i

6、nt &z;D) int &x=m;24下面对友元函数描述正确的是【 C 】A)友元函数的实现必须在类的内部定义B)友元函数是类的成员函数C)友元函数破坏了类的封装性和隐藏性D)友元函数不能访问类的私有成员25下面叙述不正确的是【 A 】A)基类的保护成员在派生类中仍然是保护成员B)基类的保护成员在公有派生类中仍然是保护成员C)基类的保护成员在私有派生类中是私有成员D)对基类成员的访问必须是无二义性26.对虚函数的调用【 D 】。A)一定使用动态联编B)必须使用动态联编C)一定使用静态联编D)不一定使用动态联编27.下列的各类函数中,【 C 】不是类的成员函数。A)构造函数B)析构函数C)友元

7、函数D)拷贝构造函数28下面对静态数据成员的描述中,正确的是【 D 】A)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象调用C)静态数据成员不能受private控制符的作用D)静态数据成员可以直接用类名调用29.下面关于友元的描述中,错误的是【 D 】。A)友元函数可以访问该类的私有数据成员B)一个类的友元类中的成员函数都是这个类的友元函数C)友元可以提高程序的运行效率D)类与类之间的友元关系可以继承30继承机制的作用是【 C 】A)信息隐藏B)数据封装C)定义新类D)数据抽象31.在声明类时,下面的说法正确的是【 C 】。A)可以在类的声明中给数据成员赋初值B)数据成员的

8、数据类型可以是registerC)private,public,protected可以按任意顺序出现D)没有用private,public,protected定义的数据成员是公有成员32.继承具有【 B 】,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。A)规律性B)传递性C)重复性D)多样性33在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是【 C 】A)友元函数B)虚函数C)构造函数D)析构函数34下列关于虚基类的描述中,错误的是【 B 】A)设置虚基类的目的是为了消除二义性;B)虚基类的构造函数在非虚基类之后调用;

9、C)若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D)若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数;35.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则【 A 】。A)完全相同B)完全不同C)部分相同,部分不同D)以上都不对36.设置虚基类的目的是【 B 】。A)简化程序B)消除二义性C)提高运行效率D)减少目标代码37考虑函数原型voidtest(inta,int b=7,char=*);,下面的函数调用中,属于不合法调用的是【 C 】A) test(5)B)test(5,8)C)test(6,#)D)test(0,

10、0.*); 38下列关于构造函数的描述中,错误的是【 D 】 A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行 C)构造函数可以是内联函数;D)构造函数不可以重载 39.关于成员函数特征的下述描述中,【 A 】是错误的。A)成员函数一定是内置函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的40.在C+中,打开一个文件就是将这个文件与一个【 B 】建立关联;关闭一个文件就取消这种关联。A)类B)流C)对象D)结构二、填空题1. C+中封装性、继承性和_是面向对象程序设计的三个主要性质。多态性2.利用成员函数对双目运算符重载,其左操作数为_,右操作数

11、为_。this指针 成员函数参数3.在一个派生类中,对基类数据成员、子对象数据成员和派生类数据成员的初始化次序是先_,后_,最后是_基类数据成员,子对象数据成员,派生类数据成员4.任何类中允许有三种访问权限的数据,这三种访问权限分别是_、_、_。public、private、protected或公有、私有和保护5.当类定义中有数据成员为指针时,解决浅拷贝出现的运行错误的方法是_。编写拷贝构造函数6.C+流类库具有两个平行的基类,它们是_和ios类。streambuf7.如果使用public继承基类,其公有成员就会变成派生类的_,其保护成员就会变成派生类的_,其私有成员_公有成员,保护成员,不能

12、继承。8._成员函数不能直接引用类中说明的非静态成员。静态9从实现的角度多态可以分为_多态和_多态。编译时的,运行时的10._是给对象取一个别名,它引入了对象的同义词。引用11._类只能作为基类使用,而不能声明它的对象。抽象12._是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。构造函数13.为了满足运算符“+”的可交换性,必须将其重载为_。友元函数14.C+允许在相同的作用域内以相同的名字定义几个不同实现的函数,称这种同一个函数名多个含义的现象为_。函数重载15.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件

13、的_可重用性16.设置友元函数的目的是为能够访问该类的_。私有成员17.基类的_成员不能被派生类的成员访问。私有18.通过一个_对象只能调用它的常成员函数,不能调用其他成员函数。常19._成员函数没有this指针。静态20.运算符重载仍然保持原来的优先级、_和语法结构。结合性21类有两个特殊的成员函数构造函数和_析构函数22.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行_、再执行_,后执行_。先执行基类的构造函数、再执行对象成员的构造函数,后执行派生类的构造函数23.运算符重载时,其函数名是由_构成。operator 运算符24.静态联编支持的多态性称为_,也称静态多态性。编译时的

14、多态性25.一个派生类只有一个基类的情况称为_,而有多个直接基类的情况称为_。单继承, 多继承26.实现运行时的多态性要使用_。虚函数27.调用析构函数的次序正好与调用构造函数的次序_相反。28.如果一个类至少有一个纯虚函数,那么就称该类为_。抽象类29.B类是A类的友元,C类是B类的友元,C类_A类的友元。不是三、读程序写结果1 #includeint a=1,3,5,7,9;int & fun(int i)return ai;void main()int i;fun(3)=12;for(i=0;i5;i+)coutait;coutendl;2. #include int n=0;int &

15、 f(int m)n+=m;return n;void main()f(10)+=20;cout”n=”nendl;3.#includeclass M public: M(int a=0,int b=0) x=a;y=b; int getx() return x; int gety() return y; private: int x,y; ; void main() M op1(5,6); int i,j; i=op1.getx(); j=op1.gety(); couti=ij=jendl; 4.#include void main() a+0int a10=9,8,7,6,5,4,3,2

16、,1,*p=a+5;cout*-pendl;*(p+3)+=2;coutp3endl;5.#include#includeclass timer public: timer() seconds=0; timer(int t) seconds=t; timer(int min,int sec) seconds=min*60+sec; int gettime() return seconds; private: int seconds; ; void main() timer a,b (10),c(1,10); coutseconds1=a.gettime()endl; coutseconds2=

17、b.gettime()endl; coutseconds3=c.gettime()endl; 6.(有static,因此第二次调用时不再执行sample函数。)#include class samplepublic:sample()cout”Constructor”endl;void fn(int i)static sample c;cout”i=”iendl;void main()fn(10);fn(20);7.#include void main()int num=31246;long p=1;dop*=num%10;num/=10;while(num);cout”p=”pendl;8 #

18、includeusing namespace std;class Teststatic int count;public:Test()+count;cout对象数量=countendl;Test()-count;cout对象数量=countendl;int Test:count=0;void main()Test t2;9.#include class A int a;public:void seta(int x)a=x;void showa()coutaendl;class B int b;public:void setb(int x)b=x;void showb()coutbendl;cl

19、ass C:public A,private Bprivate:int c;public:void setc(int x,int y,int z) c=z; seta(x); setb(y);void showc()coutcendl;void main() C c; c.seta(1); c.showa(); c.setc(1,2,3); c.showc();10 #include#includeclass girl public: girl(char *n,int d) name=new charstrlen(n)+1; strcpy(name,n); age=d; friend void

20、 disp(girl &); girl() delete name; private: char *name; int age; ;void disp(girl &x)coutGirls name is x.name,age:x.ageendl; void main() girle(Chen Xingwei,16); disp(e); 11.#includeusing namespace std;class Bookint num,price;public:Book(int a=0,int b=0)num=a;price=b;void showMoney()coutnum*priceendl;

21、void main()Book b=Book(1,2),Book(3,6),Book(8,9); Book *p;int i;p=&b2;for(i=0;ishowMoney();12.#include class sample int n;public:sample()sample(int m)n=m;int &operator-(int) n-; return n;void disp()coutn=nendl;void main() sample s(10); (s-)+; s.disp();13.#include int f(int); int main() int i;for(i=0;

22、i5;i+) coutf(i)0;i-) k +=i; return k; 14.#include class sample int x;public:sample()void setx(int i)x=i;friend int fun(sample b,int n) int m=0; for(int i=0;im) m=bi.x; return m;void main() sample a10; int arr=90,87,42,78,97,84,60,55,78,65; for(int i=0;i10;i+) ai.setx(arri); coutthe result is fun(a,1

23、0)endl;四、程序填空1. 下面程序的功能是定义类sample,并输出其数据成员,请填空:#include 【class sample】/定义类sample int m; 【static int n;】/定义整型静态数据成员n public:sample(int i)n+;m=i;【 void disp() 】/成员函数disp()的函数首部coutm=mnn=nendl;【 int sample:n=0;】/静态数据成员n赋初值为0 void main() sample s1(1),s2(2); s1.disp(); s2.disp();2.#includeusing namespace

24、 std;class B1public:B1(int b)b1=b;void show()coutb1endl;protected:int b1;class B2public:B2(int c)b2=c;void show()coutb2endl;protected:int b2;class B3:public B1,public B2public:B3(int bb,int cc,int dd) : 【 】, /构造函数的函数体b3=dd;B1:b1=bb;B2:b2=b2; /构造函数的函数体 /构造函数的函数体void setall(int x,int y,int z) b1=x;b2=

25、y;b3=z; void show()coutb1 b2 b3endl; private:int b3;void main()B3 k(1,2,3);k.show();k.setall(2,3,4);/重新为派生类对象的数据成员赋值k.show();3.#include class Date public: Date() /无参构造函数Date(int y,int m,int d) year=y;month=m;day=d;/函数体 void print() const; private: int year,month,day;/ 数据成员; void Date:print()const co

26、utyear” ”month” ”dayendl;/输出所有数据成员 int main() Date national_day(1949,10,1); national_day.print(); return 0; 4.下面程序的功能是重载“- -”运算符,使对象s的数据成员n值减1。#include class sample int n;public:sample(int m)n=m;int operator-(int)n-; return n; /函数的返回值void disp()coutn=nendl;void main() sample s(10); s-;/运算符的重载函数调用s.d

27、isp();/调用成员函数disp()输出数据成员的值 五、程序改错1.在括号里写出正确的。#includeclass Vehicleprotected:int weight;public:Vehicle(int w)weight=w;void show()cout class Vehicle endl;class Boat: public Vehicle/【 】public:Boat(int wb):Vehicle(wb)void show()cout 我能在水中游! endl;class Plane: public Vehicle/【 】public:Plane(int wp):Vehic

28、le(wp)void show()cout 我能在天上飞! endl;class Amphibian: public Boat,public Planepublic:Amphibian(int wa): Boat(wa),Plane(wa)/【 】void show()cout 我能在水中游又能在天上飞! endl;void main()Amphibian a; /【 】a.show();2. 下面程序定义类point,并输出其数据成员的值。#include class pointpublic: /【 private】int x,y;private:/【public】point(int xx,

29、 yy)/ 【 int yy 】x=xx;y=yy;void disp()coutx yendl;void main() point p1(3,4); p1.disp();/错误的为coutxyendl;3.#includeclass Mint a,b;public:M()a=b=0; M(int aa,int bb)a=aa,b=bb; M operator + (int x); /【 】M operator - (M x); /【 】void OutB()couta bendl;M operator +(M& x) /【 】M r;r.a=a+x.a;r.b=b+x.b;return r;

30、M M:operator -(M& x) int r; /【 】 r.a=a-x.a; r.b=b-x.b; return r;void main()M x(3,5),y(8,4),z1,z2;z1=x+y;z2=x-y;z1.OutB();z2.OutB();4.下列程序定义一个时钟类,并能设置和显示时间,要求ShowTime()函数为内联函数。#include class Clockpublic:SetTime(int NewH=0,int NewM=0,int NewS=0);/ 【 】void ShowTime();private:int Hour,Minute,Second;void

31、 Clock:SetTime(int NewH,int NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()/【 】 coutHour:Minute:Secondendl;int main() Clock myClock; coutFirst time set and output:endl; SetTime();/【 】 myClock.ShowTime(); coutSecond time set and output:endl; myClock.SetTime(8;30;30);/ 【 】 myCloc

32、k.ShowTime(); return 0;六、编程题1. 编程序完成以下要求:定义一个日期类Date,该类对象存放一个日期,并实现以下要求:1) void GetDate(); /取日期值,格式如“2009年11月4日”2) void SetDate(int y,int m,int d); /设置日期值3) 在主函数中对日期对象作以下定义:l Date d1(2009,11,4);/用所给日期定义一个日期变量l Date d2; /定义一个日期对象l Date d3(d1); /用已有的日期对象构造一个新对象2. 设计一个立方体类box,它能提供立方体的体积和表面积,并采用相应数据进行测试

33、。 要求:1) box类包含3个私有数据成员,即立方体边长a、volume(体积)、area(立方体表面积)2) 两个构造函数以及成员函数seta()(设置立方体边长)3) getvolume()和getarea()用于计算立方体的体积和表面积4) disp()用于输出计算结果。#includeclass boxpublic:box(int b)a=b;box() void seta(int i)a=i;void getvolume()volume=a*a*a;void getarea()area=a*a*6;void disp()cout体积是volume 面积是areaendl;priva

34、te:int a,volume,area;void main()box a1(3);a1.getarea();a1.getvolume();a1.disp();box a2;a2.seta(4);a2.getarea();a2.getvolume();a2.disp();3. 设计描述小汽车(car)、公共汽车(bus)、和卡车(truck)的系统类,提取其中的共性建立基类为抽象类,个类能分别显示不同车型的载客人数和载重量,测试这个类。#includeclass Basepublic:virtual void display()=0;class car:public Baseprivate:i

35、nt num,weight;public:car(int n,int w) num=n,weight=w;void display() coutcar:endl;cout载客人数:num 重量:weightendl;class bus:public Baseprivate:int num,weight;public:bus(int n,int w) num=n,weight=w;void display()coutbus:endl;cout载客人数:num 重量:weightdisplay();int main()Base *q;car a(12,23);bus b(21,32);q=&a;fun(q);q=&b;fun(q);4. 声明一个employee类,其中包括姓名、地址、邮编和电话属性。1) 使用构造函数和构造函数重载完成数据的初始化;2) Chang_name()函数,改变对象的姓名属性;3) Display()函数显示;4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号