类和对象的定义和使用_第1页
类和对象的定义和使用_第2页
类和对象的定义和使用_第3页
类和对象的定义和使用_第4页
类和对象的定义和使用_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

1、类和对象的定义和使用博U啾室/芳实验报告2022/2022学年第二学期课程名称面向对象程序设计及C+实验名称实验一:类和对象的定义及使用实验时间2022年3月25日指导单位光电工程学院指导教师陈景强学生姓名班级学号学院系专业类和对象的定义和使用实验报告实验名称类和对象的定义及使用指导教师实验种类考证实验学时2实验时间一、实验目的和要求(1)掌握类与对象的定义与使用方法,理解而向对象方法中经过对象间传达信息的工作体制.(2)正确掌握类的不一样属性成员的使用方法.(3)掌握结构函数与析构函数的观点,理解结构函数与析构函数的履行过程.(4)掌握友元函数和友元类的定义和使用.(5)根本掌握指针和引用作

2、为函数参数的应用.实验环境(实验设施)硬件:微型计算机软件:MicrosoftVisualC+三、实验原理及内容实验题目(1)定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义结构函数、析构函数以及用于改变、获得、输出时间信息的公有函数,主函数中定义时间对象,并经过调用各样成员函数达成时间的设定、改变、获得、输出等功能.按要求达成类的定义与实现.改正数据成员的接见方式,观察编译结果.在Time类中定义一个成员函数,用于实现时间增添一秒的功能,主函数中经过对象调用该函数,并输出增添一秒后的时间信息.定义一个一般函数.voidf(Timet)类和对象的定义和使用(

3、t.PrintTime();)在Time类中增添拷贝结构函数的定义,主函数中调用该函数,运用调试工具追踪,分析整个程序调用结构函数(包含拷贝结构函数)和析构函数的次数;再将f函数的形式参数分别改正为弓I用参数和指针参数(此时函数代码改正为t-PrintTime();,主函数中调用,再剖析此时调用结构函数和析构函数的次数.实验报告类和对象的定义和使用参照实验教材中相应的实验提示局部按要求达成程序,并答复有关问题要求达成后的源程序代码以下:#includeusingnamespacestd;classTime(private:intHour,Minute,Second;public:Time(in

4、th=0,intm=0,ints=0);Time(constTime&ob);Time();voidChangeTime(inth,intm,ints);intGetHour();intGetMinute();intGetSecond();voidPrintTime();voidIncreaseOneSecond();Time:Time(inth,intm,ints)(Hour=h;Minute=m;Second=s;Time:Time(constTime&ob)(Hour=;Minute=;Second=;Time:Time()(类和对象的定义和使用)voidTime:Cha

5、ngeTime(inth,intm,ints)(Hour=h;Minute=m;Second=s;)intTime:GetHour()(returnHour;)intTime:GetMinute()(returnMinute;)intTime:GetSecond()(returnSecond;)voidTime:PrintTime()(coutHour:Minute:Secondendl;)voidTime:IncreaseOneSecond()(Second+;)/*voidTime:f(Timet)();coutcallfn;*/intmain()类和对象的定义和使用Timea;Timeb

6、(13);Timec(13,15);Timed(13,15,45);();();();();(12,15,45);(12,15,45);(12,15,45);(12,15,45);cout():():()endl;cout():():()endl;cout():():()endl;cout():():()endl;return0;程序的运转结果是:0:0:013:0:013:15:013:15:4512:15:4512:15:4512:15:4512:15:45Pressanykeytocontinue类和对象的定义和使用结构函数与析构函数的调用方式及履行次序是:先是结构函数而后是析构函数.调

7、用方式是自动调用,履行次序是先履行结构函数,析构函数.待程序结束时再履行实验报告类和对象的定义和使用撤消类中成员函数IncreaceOneSecond()的说明标记,将该函数增补完好,注意时间在增添一秒状况下的进位关系.该函数的代码以下:voidTime:IncreaseOneSecond()(if(Second59)Second+;elseif(Second=59&Minute=59&Hour=23)(Hour=0;Minute=0;Second=0;elseif(Second=59&Minute=59&Hour23)(Minute=0;Second=0;Ho

8、ur+;elseif(Second=59&Minute59&Hour23)(Minute+;Second=0;Hour+;coutHour:Minute:Secondendl;主函数中定义一个Time类对象并调用一次f函数,观察结果填写下表:f函数的原型主函数中调用f的语句结构函数调用次数拷贝结构函数调用次数析构函数调用次数voidf(Timet);F(t0)112voidf(Time&t);F(t0)101经过以上结果,对于对象作形式参数、对象引用作形式参数、对象指针作形式参数时结构函数、析构函数的调用次数及次序,你获得什么结论类和对象的定义和使用voidf(Time

9、*t);F(p)实验报告类和对象的定义和使用实验题目(2)定义一个Girl类和一个Boy类,这两个类中都有表示姓名、年纪的私有成员变量,都要定义结构函数、析构函数、输出成员变量信息的公有成员函数.依据要求定义相应的类.将Girl类作为Boy类的友元类,在Girl类的成员函数VisitBoy(Boy&)中接见Boy类的私有成员,观察程序运转结果.在Boy类的某成员函数VisitGirl(Girl&)中试图接见Girl类的私有成员,观察编译器给出的错误信息,理解原由.主函数中正确立义两个类的对象,调用各自的成员函数实现相应功能.再将Boy类作为Girl类的友元类,在Boy类的某成员

10、函数VisitGirl(Girl&)中接见Girl类的私有成员,观察编译器给由的信息.删除两个类中的函数VisitGirl(Girl&),VisitBoy(Boy&),定义一个顶层函数VisitBoyGirl(Boy&,Girl&),作为以上两个类的友元,经过调用该函数输由男孩和女孩的信息.实验解答:定义相应的类,主函数中定义相应的类成员,调用各种的输出函数显示信息.源程序代码以下:#includeusingnamespacestd;classBoy;classGirlpublic:charname25;intage;Girl(charN,intA=19

11、);Girl();类和对象的定义和使用voidprint();voidVisitBoy(Boy&););classBoy(public:charname25;intage;Boy(charN,intA=19);Boy();voidprint();friendGirl;);Boy:Boy(charN,intA)(strcpy(name,N);age=A;)Boy:Boy()()voidBoy:print()(coutBoy:nameageendl;)Girl:Girl(charN,intA)类和对象的定义和使用(strcpy(name,N);age=A;)Girl:-Girl()()vo

12、idGirl:print()(coutGirl:nameageendl;)voidGirl:VisitBoy(Boy&boy)(coutBoysname:endl;coutBoysage:endl;)intmain()(Boya(xpx,19);Girlb(lala,19);(a);();();return0;)实验报告类和对象的定义和使用程序的运转结果是:Boysname:xpxBoysage:19Boy:xpx19Girl:lala19Pressanykeytocontinue将Girl类作为Boy类的友元类,写出Girl类的成员函数VisitBoy(Boy&)的实现代码.

13、voidGirl:VisitBoy(Boy&boy)coutBoysname:endl;coutBoysage:endl;实验报告在Boy类的某成员函数VisitGirl(Girl&)中试图接见Girl类的私有成员,记录编译器给出的错误信息,与对照,你能得出友元的什么特征友元关系是单向的,不拥有互换性在上边代码的根底上,在Girl类的定义中,增添一行代码:friendBoy;在主函数中经过Boy类对象.VisitGirl(Girl类对象)的形式输出 Girl 类对象的信息.编译的类和对象的定义和使用结果是写出这一步你的主函数代码,要求分别用友元函数Girl类对象.Vis 让 B

14、oy(Boy类对象);和Boy类对象.VisitGirl(Girl类对象);和输出两个类对象的信息.实验二|14|error:novoidGirl:VisitBoy(Boy&)memberfunctiondeclaredinclassGirl|(B2);(G1);输出:GirlconstructingBoyconstructingBoysname:JackBoysage:22Girlsname:MaryGirlsage:20实验报告定义一个顶层函数voidVisitBoyGirl(Boy&,Girl&),作为以上两个类的友元函数,主函数中经过调用该函数输出男孩和女孩的信

15、息.写出该友元函数的完好代码,以及主函数的代码.voidVisitBoyGirl(Boy&boy,Girl&girl)coutGirlsname:endl;coutGirlsage:endl;coutBoysname:endl;coutBoysage:endl;类和对象的定义和使用VisitBoyGirl(B2,G1);实验报告四、实验小结包含问题和解决方法、心得领会、建议与建议等1.在题目1中不改变main函数中的对象的定义方式,假设撤消结构函数中参数的默认值,编译程序错误提示信息及犯错原由是:D:MicrosoftVisualfunctionforcalltoTime:Ti

16、me()|D:MicrosoftVisualfunctionforcalltoTime:Time(int)D:MicrosoftVisualfunctionforcalltoTime:Time(int,int)|实验一|7|error:nomatching实验一|8|error:nomatching|实验一|9|error:nomatching函数二义性2.在题目1中假设删除类中自定义的结构函数,仅使用系统默认结构函数,再编译,程序错误提示信息及犯错原由是:functionforcalltoTime:Time(int,int,int)|结构函数实参不正确D:MicrosoftVisualfun

17、ctionforcalltoTime:Time()|D:MicrosoftVisualfunctionforcalltoTime:Time(int)D:MicrosoftVisualfunctionforcalltoTime:Time(int,int)|D:Microsoft实验一|7|error:nomatching实验一|8|error:nomatching|实验一|9|error:nomatching实验一|10|error:nomatching类和对象的定义和使用cout对象名.Hour:对象名.Minute:对象名.Secondendl;从头编译,会出现什么错误提示在这类状况下,假设将成员变量的接见属性改正为public再编译,果怎样实验一|17|error:intTime:Hourisprivate|实验一|17|error:withinthiscontext|实验一|17|error:Hourcannotbeusedasafunction|private|实验一|17|error:withinthiscontext|实验一|17|error:Minutecannotbeusedasafunction|private|实验一|17|er

温馨提示

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

评论

0/150

提交评论