

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、椿选范木,供参考!习题二一、填空题1. 对运算符进行重载时,不能 改变结合性,不能 改变操作数个数,不能_改变优先级。2. 当+被重栽为后置成员函数时需要0 个参数。3. 当+被重载为前置成员函数时需要1 个参数。4. 在 C卄中,运算符重载函数可以是成员函数,也可以是友元函数,还可以是普通函数。5. 友元破坏了类的封装性特性。6. 类的友元能够访问这个类的所有 成员。7. 类的静态数据成员的初始化是在类外进行的。8. 类的静态成员函数没有 this指针。9. 类的静态成员函数访问该类的非静态成员可以通过 参数传递对象来实现。10. 不能被重载的类成员函数是构造和析构函数。二、选择题1.已知类
2、 A 有一个带 double 型参数的构造函数,且将运算符“ + ”重载为该类友元函数,3.友元运算符表达式 objlobj2被 C+编译器解释为(A )oA. operator(obj 1 ,obj2)C. obj2.operator(obj 1)D. obj 1 .operator(obj2)4下列关于 C+运算符函数的返回类型的描述中,错误的是(C )o若如下语句:A x(2 5),y(3 6),z(0); z=x+y; 应在类中声明为(D )。A. friend A operator+ (double , double);C friend A operator+ (A &, d
3、ouble);2.卞列关于运算符重载的描述中,正确的是(A.运算符重载可以改变操作数的个数C.运算符重载可以改变结合性能够正常运行,运算符重载函数 opeiator+E. friend A operator+ ( double , A &);D friend A operator+ (A &,A &);D )oB.运算符重载可以改变优先级D.运算符重载不可以改变语法结构B. (objl,obj2)椿选范木,供参考!B.可以是 int类型A 可以是类类型椿选范木,供参考!C.可以是 void类型 D.可以是 float类型5.为了区别单目运算符的前置和后置运算,在后置运算
4、符进行重载时,额外添加一个参数, 其类型是(D )。6.以下运算符中,不能在 C卄中重载的是(8.若类 A 被说明成类 E 的友元,则(D9.友元的作用是(A )oio.卜列关于静态数据成员的特性描述中错误的是C.引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符D.静态数据成员不是所有对象所共用的11关于友元的描述中,正确的是(C )。12.用来说明类的友元的是(D )o13.已知 fl和卫是同一个类的两个成员函数,但 fl 不能调用下列选项中符合要求的是(B )。A. voidB. charC. floatD. mtA. ?:B.+C.-D. =7.在一个类中可以对一个操作符
5、进行(D )重载。A. 1 种E.2 种以下C.3 种以下D.多种A.类 A 的成员即类 E的成员B. 类 E 的成员即类 A 的成员C.类 A 的成员函数不能访问类 E 的成员D. 类 E 不一定是类 A 的友元A.提高成员的运行效率B. 加强类的対装性C.实现数据的隐藏性D. 增加成员函数的种类A.说明静态数据成员时前边要加 staticB. 静态数据成员要在类体外进行初始化A. 友元函数是成员函数的一种,它可以访问类的私有成员B. 友元函数不能提高程序的运行效率C. 友元函数要在类体内说明D. 友元函数增强了类的封装性和隐藏性A. privateE. protectedC publicD
6、. fiiend椿选范木,供参考!A. fl和 f2都是静态函数B. fl是静态函数,2不是静态函数C. fl 不是静态函数,2是静态函数D. fl和2 都不是静态函数14.下面对于友元函数描述正确的是(C )。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的保护成员15. 一个类的友元函数或友元类能够通过成员操作符访问该类的(D )A.私有成员B保护成员C.公有成员D.所有成员16下面对静态数据成员的描述中,正确的是(D )A.静态数据成员可以在类体内进行初始化 B.静态数据成员不可以被类的对彖调用C.静态数据成员不受
7、 private 控制符的限制 D.静态数据成员可以直接用类名调用17. C+语言中提供的(B )不是类的成员,但具有类成员的特权。A.构造函数B.友元函数C.虎函数D.重载函数18下列关于静态成员函数的说法中不正确的是(C )A.静态成员函数不属于对象成员B.对静态成员函数的引用不需要使用对彖名C. 静态成员函数中可以直接引用类的非静态成员D. 静态成员函数中町以直接引用类的静态成员19下面对友元的错误描述是(D )。A. 关键字仕 iend用于声明友元B. 一个类中的成员函数可以是另一个类的友元函数C. 友元函数访问对彖的成员不受访问特性影响D. 友元函数通过 this 指针访问对象成员2
8、0卞列有关一个类的友元函数的叙述中,正确的(B )A. 允许在类外访问类中除私有成员以外的所有成员B. 允许在类外访问类中的任何成员C. 友元也是该类的成员D. 友元的声明必须被放在该类的公有部分三、判断题1、静态数据成员可以通过类名或对象名引用。2、静态数据成员可以在类内或类外进行初始化。楮选范木,供参考!3、在静态成员函数中可以访问本类中非静态的数据成员。4、类的静态成员函数的初始化工作要放在类外进行。5、若 A 是 B 的友元类,B 是 C的友元类,则 A 是 C的友元类。6、通过运算符重载,可以定义新的运算符。7、 C卄中的所有运算符都能被重载。8、 运算符重载不能改变操作数的个数。9
9、、 运算符重载不能改变其优先级与结合性。10、 在运算符重载函数中不能使用缺省的参数值。答案:1、J 2、X 3、J 4、X 5、X 6、X 7、X 8、J 9、J 10、四、程序分析题(写程序运行结果)1. #include class Aint x,y,z;public:A(iiit vx jnt vydnt vz) x=vx;y=vy;z=vz;A() x=0;y=0;z=0;A operator+(A t)Ate;te.x=x+t.z; te.y=y+t.y; te.z=z+t.z; return te;A opeiatoi-(A t)Ate;te.x=x-t.z; te.y=y-t.
10、y; te.z=z-t.z; return te;A opeiator=(A t)x=t.x;y=t.y;楮选范木,供参考!z=t.z;return *this;void prmt() coutxH ,yH Hendl; ;void main()Atl(10J0J 0),t2(20,2020),t3;t3=tl+t2;t3.pimtQ;t3=t2=tl;tl.pimtQ;t2.pimtQ;t3.pimtQ;答案:30 3010 1010 1010 102. #iiiclude class Apublic:rant c) iow=i:;col=c; elem=new iiitrow*col; i
11、nt& operatorQ(mt xjnt y) return elemcol*x-ry; int opeiator()(int x,mt y)const return elemcol*x+v; A0 delete elem; private:int *elem;int row,col;楮选范木,供参考!;void main()A ni(5,8);int i;for( i=0;i5;i+) m(i,l)=i+5;fdr( i=0;i5;i+) coutniA),9;coutendl:答案:5,6,7,8,9,3. #iiiclude using namespace std;class
12、goodsprivate:static mt totalweight;int weight;public:goods(iiit w) weight=w; totalweight+=weight; goods(goods &gd) weight=gd.weight; totalweight+=weight; goods。totalweight 亠 weight; static mt gettotalQ return totalweight; ;mt goods:totalweight=0;椿选范木,供参考!void main()goods gl(50);coutgoods:gettota
13、l(jendl;goods g2(100);coutg2.gettotal()endl;答案:501504. #iiiclude using namespace std;class Ainti j;static mt c;public:A(iiit a=O.iiit b=0) i=a; j=b; C+; A() c-; static void f() coutHc=Hcendl;iiit A:c=0;void main()Aa(4,8),b,d;Az(3,6),f;A:f();A:f();楮选范木,供参考!答案:c=5c=35. #iiiclude using namespace std;cl
14、ass pointpublic:void poi(iiit px=10,int pv=10) X=px; y=py; friend mt getpx(pomt a); friend mt getpv(pomt b);private:int x,y;mt getpx(pomt a)return a.x;mt getpy(point a)return a.y;void main()point p.q;p.poi();q.poi(15,15); coutgetpx(p); coutgetpy(p)endl; coutgetpx(q); coutgetpy(q)endl;答案:1010 15156.
15、#include class B;class Aint data;A *piev;public:楮选范木,供参考!d.A *n)data=d;piev=n;fiiend class B;class BA *top;public:B()top=0;void push(iiit i)A *n=new A(ijop);top=n;mt popQA *t=top;血 OP)top=top-prev;iiit c=t-data;delete t;return c;return 0;void main()intc10=23,34,56,87,67,876,42,657,55,66;Bs;for(iiit
16、1=0: i10;i-H-)s.push(ci);fbr(i=O; i10; i+)couts.popO,n; coutendl;答案:66,55,657,42,876,67,87,56,34,23,楮选范木,供参考!7. #iiicludeusing namespace std;class TIME;class DATEpublic:DATE(int a=2004,iiit m=9,iiit b=23)yeai-a; month=m; dav=b;void DateTune(TIME &t);private:int yeaianonthjay;;class TIMEpublic:TI
17、NIE(int h=0,mt m=0,int s=0)houi=h; nunute=m; second=s;friend void DATE:DateTune(TEvIE&t);private:int houi;niiiiute,sec ond;void DATE:DateTune(TIME&t)cout,rNowisHyear.,month,/dayt.hourl:,t.nunute,:,t.second,endl;楮选范木,供参考!mt mam()DATE b(2004.9,23);TIME t( 10,20,50);b.DateTiine(t);return 0;答案:N
18、owis2004.9.2310:20:50.四、编程题1.定义一个处理口期的类 TDate,它有 3个私有数据成员:Montli,Day,Year 和若干个公有成员函数,并实现如下要求:(1) 成员函数设置缺省参数;(2) 定义一个友元函数来打印口期。参考程序:#include using namespace std;class TDate椿选范木,供参考!public:TDate(iiit m=O,mt d=O,int y=0) :Month(m).Day(d), Yeai(y)TDateQfriend void Show(TDate);private:int Month,Day, Year
19、;void Show(TDate d)coutd.Yeal,年”d.Month” 月 ”d.Day” 口 endl;iiit mam()TDate dl,d2(4,8,2014);Show(dl);Show(d2);return 0;2.设计一个类 CTmielnfb,要求其满足卞述要求。(1) 要求有一个无参数的构造函数,其初始的小时和分钟分别为:0, 0;(2) 要求有一个带参数的构造函数,其参数分别对应小时和分钟;(3) 要求用一个成员函数实现时间的设置;(4) 要求用一个友元函数实现以 12小时的方式输出时间;(5) 要求用一个友元函数实现以 24小时的方式输出时间;参考程序:#inc
20、lude using namespace std;class CTiinelnfopublic:CTimeIiifoQ:Hour(0),Minute(0)楮选范木,供参考!CTimeIiifb(int hint m): Hour(h) ,Minute(m)-CTimeIiifo()void Set(iiit hjnt m)Hotu-h; Minute=m;friend void Show_l 2(CTiineIiifb);friend void Show_24(CTmieIiifo);private:mt HourMmute;void Show_l 2(CTimeIiifb d)if(d.Ho
21、ur=12)coutHain,d.Houi,:,d.Minuteendl;elsed.Hour-=12;coutMpm,d.HouiH:Hd.Minuteendl;void Show_24(CTimeIiifo d)coutd.Houi,:,d.Mmuteendl;mtCTimelnfod l、d2(21,8);Show_12(dl);Show_12(d2);Show_24(d2);return 0;3.定义一个 Strident 类,在该类定义中包括:一,个数据成员 score(分数)及两个静态数据成员total(总分)和 count(学生人数)。成员函数:scoretotalcount(f
22、loat s)用于设置分数、求总分和 累计学生人数:静态成员函数 sum 用于返回总分;静态成员函数 average 用于求平均分。在 main 函数中,创建三名学生,并调用上述函数求这三名学生的总分和平均分。参考程序:#include class Studentpublic:void scoretotalcount(float s)score=s;total+=score;count-H-;static float sum() return total; static float averageQ return totaVcount; private:float score;static f
23、loat total;static int count;float Student: :total=0;mt Student:count=0;精选范木,供参考!精选范木,供参考!void main()Student sl、s2,s3;si .scoretotalcouiit(70);s2.scoretotalcouiit(80);s3.scoretotalcouiit(90);coutMtotal:HStudent: sumQendl;coutHaveiage:,Student:averageQendl;4.编写程序实现宾馆住宿客人管理。定义客人类 Guest,包含客人编号 Num (按先后顺
24、序 自动生成)、姓名 Name、住宿房号 Room、房费 fbe,并定义静态成员 Count,用于记录客人 总数;提供构造函数,显示信息函数 Display,以及返回客人总数函数 GetCount等。在主函 数中创建 3个客人对彖进行测试。参考程序:include include using namespace std;class Guestpublic:Guest(stiing n.striiig i.double f)Num=+Count;Name=n;Room=r;fee=f;void display()coutNumM MNamen HRoomM Hfeeendl;精选范木,供参考!s
25、tatic mt GetCount()return Count;private:int Num;strmg Name;strmg Room;double fee;static mt Count;mt Guest:Count=0;mt mam()Guest glCzhangOlVOO);Guest g2(HirH20r300);Guest g3(nwangn;f30r500);gl.displayQ;g2 display();g3.display();coutHTotal=MGuest:GetCount()endl;return 0;5.生成一个复数类 Complexo 复数的实部和虚部分别为
26、double型 x和 y。重载运算符加、减、乘、除为类的成员函数,用来计算两个复数的加、减、乘、除运算。参考程序:#include class complexprivate:double x,y;精选范木,供参考!public:complex(double xx=0,double yv=0)x=xx;y=yy;void display()cout,(x,yHi),endl;complex operator +(complex &cl);complex operator -(complex &cl);complex opeiator *(complex &cl);complex operator /(complex &cl);complex complex:operator +(complex &cl)complex c;C X=X+C1 X;c.y=y+cl.v;retuin c;complex complex:operator (complex &cl)complex c;c.x=x-cl.x;c.y=y-cl.y;return c;complex complex:operator *(complex &cl)精选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区用地管理办法
- 待岗减薪管理办法
- 投资清单管理办法
- 材料挂账管理办法
- 建工资质管理办法
- 材料异常管理办法
- 患者投诉管理办法
- 引导基金管理办法
- 徐工项目管理办法
- 招标管理办法培训
- 干部人事档案目录
- 全球及中国军用气垫船行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 有丝分裂和减数分裂测试题-(2)可编辑
- 低压电工作业复审培训
- JTG D70-2-2014 公路隧道设计规范 第二册 交通工程与附属设施
- 光伏发电项目技术标投标文件
- 20242024湖北邮政校园招聘【700+人】高频考题难、易错点模拟试题(共500题)附带答案详解
- sqe主管述职报告
- 2024年山东烟台国丰投资控股有限公司招聘笔试参考题库含答案解析
- 外研版八年级英语下册《完形填空》期末复习专项练习题(含答案)
- 共享菜园可行性计划方案
评论
0/150
提交评论