




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称实验名称实验时间指导单位指导教师课程名称实验名称实验时间指导单位指导教师实验报告(学年第二学期)面向对象程序设计及C++实验一:类和对象的定义及使用年3月垄日物联网学院Boy::〜Boy()).voidBoy::print()(cout«/zBoy:H«name,z<<age<<end1;).Girl::Girl(charN[],intA)(strcpy(name,N);age=A;}Girl::〜Girl。).voidGir1::print(){.cout<V"Gir1:"<Vname<<""<<age«endl;).voidGirl::VisitBoy(Boy&boy)(cosname:“<<«end1;cout«/zBoy,sage:"<Xboy.age<〈end1;)intmain(){.Boya("xpx”,19);Girlb("laia”,19);b.VisitBoy(a);print()print();return0;).实验报告程序的运营结果是:Boy'snamexpxBoy'sage:19Boy:xpx19Girl:1ala19PressanykeytocontinueL.T\人人人人UBoy'sname:xpxBoy'sage:19Boy:xpx19Girl:lala19Pressanykeytocontinue②将Girl类作为Boy类的友元类,写出Girl类的成员函数VisitBoy(Boy&)的实现代码。voidGirl::VisitBoy(Boy&boy)(cout<<nBoy'sname:"<<«endl;cout<<nBoy,sage:n<<boy.age«endl;)实验报告③在Boy类的某成员函数VisitGirl(Girl&)中试图访问Girl类的私有成员,记录编译器给出的错误信息,与②对比,你能得出友元的什么特性?友元关系是单向的,不具有互换性④在上面代码的基础上,在Girl类的定义中,增长一行代码:friendBoy;在主函数中通过Boy类对象.VisitGir1(Gir1类对象)的形式输出Girl类对象的信息。编译的结果是?写出这一步你的主函数代码,规定分别用友元函数Gir1类对象.VisitBoy(Boy类对象);和Boy类对象.VisitGir1(Gir1类对象);和输出两个类对象的信息。D:\MicrosoftVisua1Studio\MyProjects\实验二\exp3_Lcpp|14|error:no"voidGir1::VisitBoy(Boy&)'memberfunctiondeciaredinclass'GiiT|Gl.VisitBoy(B2);B2.VisitGir1(G1);输出:GirlconstructingBoyconstruetingBoy,sname:JackBoy'sage:22Girl'sname:MaryGirrsage:20实验报告⑤定义一个顶层函数voidVisitBoyGirl(Boy&,Girl&),作为以上两个类的友元函数,主函数中通过调用该函数输出男孩和女孩的信息。写出该友元函数的完整代码,以及主函数的代码。voidVisitBoyGirl(Boy&boy,Gir1&girl)(cout«/zGirrsname:^«<<endl;cout«/zGirl,sage:^<<girl.age«endl;cout«/zBoyzsname:"«boy・name«endl;cout<<"Boy'sage:"〈〈boy.ageVVendl;).VisitBoyGirl(B2,Gl);实验报告四、实验小结(涉及问题和解决方法、心得体会、意见与建议等)L在题目(1)中②不改变main。函数中的对象的定义方式,若取消构造函数中参数的默认值,编译程序错误提醒信息及犯错因素是:D:\MicrosoftVisua1Studio\MyProjects、实验一\Time.cpp|7|error:nomatchingfunctionforca11to'Time::TimeO,|D:\MicrosoftVisua1Studio'MyProjects\实验一\Time.cpp181error:nomatchingfunctionforcalltoTime::Time(int)fD:\MicrosoftVisualStudio\MyProjects\实验一\Time.cpp|9|error:nomatchingfunotionforcal1to'Time::Time(int,int)'I函数二义性.在题目(1)中③假如删除类中自定义的构造函数,仅使用系统默认构造函数,再编译,程序错误提醒信息及犯错因素是:D:\MicrosoftVisua1Studio\MyProjects\实验一\Time,cpp171error:nomatchingfunctionforcalltoTime::Time()7|D:\MicrosoftVisualStudio\MyProjects\实验一'Time,cpp⑻error:nomatehingfunctionforcalltoTime::Time(int)'ID:\MicrosoftVisualStudio\MyProjects、实验一'Tiine.cpp|9|error:nomatchingfunctionforcallto'Time::Time(int,int),ID:\MicrosoftVisua1Studio\MyProjects\实验一\Time.cpp|10|error:nomatchingfunctionforca11toTime::Time(int,int,int|构造函数实参不对的.在题目(1)中④恢复成①的对的状态,假如将main()函数中的输出语句改为:cou〈对象名.Hour<<":〃<〈对象名.Minute<<〃:”<<对象名.Second<<end1;重新编译,会出现什么错误提醒?在这种情况下,假如将成员变量的访问属性修改为Pub1ic再编译,结果如何?D:\MicrosoftVisua1Studio\MyProjects\实验一\Time.hI17|error:'intTime::Hour'isprivate|D:\MicrosoftVisua1Studio\MyProjects'实验一\Time.cppI17Ierror:withinthiscontextID:\MicrosoftVisualStudio\MyProjects\实验一\Time.cpp117Ierror:'t4.Time::Hour,cannotbeusedasafunction|D:\MierosoftVisua1Studio\MyProjects\实验一\Time.h|17|error:'intTime::Minute'isprivate|.D:\MicrosoftVisua1Studio\MyProjects\实验一\Time.cppI171error:withinthiscontext|.D:\MicrosoftVisualStudio\MyProjects\实验一\Time,cppI171error:'t4.Time::Minute,cannotbeusedasafunction|D:\MicrosoftVisualStudio\MyProjects、实验一\Time.h|171error:、intTime::Second'isprivate|D:\MicrosoftVisualStudio\MyProjects\实验一k\Time.cpp|171error:withinthiscontext|D:\MicrosoftVisualStudio\MyProjects\实验一\Time.cppI17|error:,t4・Time::Second'cannotbeusedasafunction|5.心得体会:1,注意向前引用。,2,要注意构造函数的用法。3,友元可以提高效率,方便编程。但会破坏类的整体操作性和封装性。五、指导教师评语成绩批阅人
实验报告实验名称类和对象的定义及使用指导教师肖学中实验类型验证实验学时2实验时间3月20日一、实验目的和规定(1)掌握类与对象的定义与使用方法,理解面向对象方法中通过对象间传递消息的工作机制。(2)对的掌握类的不同属性成员的使用方法。(3)掌握构造函数与析构函数的概念,理解构造函数与析构函数的执行过程。(4)掌握友元函数和友元类的定义和使用。(5)基本掌握指针和引用作为函数参数的应用。二、实验环境(实验设备)硬件:微型计算机软件:MicrosoftVisua1C++6.0三、实验原理及内容实验题目(1)定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完毕时间的设定、改变、获取、输出等功能。①按规定完毕类的定义与实现。修改数据成员的访问方式,观测编译结果。在Time类中定义一个成员函数,用于实现时间增长一秒的功能,主函数中通过对象调用该函数,并输出增长一秒后的时间信息。④定义一个普通函数。voidf(Timet)(t.PrintTime();}在Time类中增长拷贝构造函数的定义,主函数中调用该函数,运用调试工具跟踪,分析整个程序调用构造函数(涉及拷贝构造函数)和析构函数的次数;再将f函数的形式参数分别修改为引用参数和指针参数(此时函数代码修改为{t->PrintTime();},主函数中调用,再分析此时调用构造函数和析构函数的次数。实验报告参考实验教材中相应的实验提醒部分按规定完毕程序,并回答相关问题。规定①完毕后的源程序代码如下:Winclude<iostream>usingnamespacestd;c1assTime(private:.intHour,Minute,Second;pub1ic:^Time(inth=0,intm=0,ints=0);,Time(constTime&ob);吁Time();ovoidChangeTime(inth,intm,ints);ointGetHour();'intGetMinute();nntGetSecond();ovoidPrintTime();ovoidIncrease0neSecond(););Time::Time(inth,intm,ints)(Hour=hMinute=m;Second=s;)Time::Time(constTime&ob)(Hour=ob.Hour;Minute=ob.Minute;Second=ob.Second;)Time::〜Time()()voidTime::ChangeTime(inth,intm,ints)(Hour=h;Minute=m;Second=s;).intTime::GetHour()(returnHour;)intTime::GetMinute()(returnMinute;)intTime::GetSecond()(returnSecond;)voidTime::PrintTime()(cout«Hour<<":"<<Minute〈V":"<<Second<<endl;)voidTime::IncreaseOneSecond()(Second++;)AvoidTime::f(Timet)(t.PrintTimeO;cout«ncallf\n〃;}*/intmain()(Timea;.Timeb(13);Timec(13,15);Timed(13,15,45);.a.PrintTime();b.PrintTime();c・PrintTime();d.PrintTime();ChangeTime(12,15,45);ChangeTime(12,15,45);ChangeTime(12,15,45);,d.ChangeTime(12,15,45);coutVVa.GetHour()<<":"<<a・GetMinute()〈V":"V<a.GetSecond()«endl;cout«b.GetHour()<<^:z/«b.GetMinute()<<zz:/z<<b.GetSecond()<<endl;cout<<c.GetHour()<<":"<<c.GetMinute()<<":"<<c.GetSecond()<<end1;cout«d.GetHour()<<z,:/z«d.GetMinute()«n:d.GetSecond()<<end1;return0;).程序的运营结果是:0:0:013:0:013:15:013:15:4512:15:4512:15:4515:4512:15:45Pressanykeytocontinue•E:\C++6.0\B14070519\Debug\^g—exe"l口IU_里一1构造函数与析构函数的调用方式及执行顺序是:先是构造函数然后是析构函数。调用方式是自动调用,执行顺序是先执行构造函数,待程序结束时再执行析构函数。实验报告③取消类中成员函数IncreaceOneSecond()的注释标志为该函数补充完整,注意时间在增长一秒情况下的进位关系。该函数的代码如下:voidTime::IncreaseOneSecond()(if(Second<59)Second++;e1seif(Second==59&&Minute==59&&Hour==23)(Hour=0;Minute=0;Second=0;}elseif(Second==59&&Minute==59&&Hour<23)(Minute=0;Second=0;Hour++;}elseif(Second==59&&Minute<59&&Hour<23)(Minute++;Second=0;
Hour++;)cout<<Hour<<:/z<<Minute<<ZZ:,Z«Second<<endl;).④主函数中定义一个Time类对象并调用一次f函数,观测结果填写下表:f函数的原型主函数中调用f的语句构造函数调用次数拷贝构造函数调用次数析构函数调用次数voidf(Timet);F(tO)112voidf(Time&t);F(tO)101voidf(Time*t);F(p)101通过以上结果,关于对象作形式参数、对象引用作形式参数、对象指针作形式参数时构造函数、析构函数的调用次数及顺序,你得到什么结论?.实验报告实验题目(2)定义一个Gir1类和一个Boy类,这两个类中都有表达姓名、年龄的私有成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合伙开店合同
- 房地产交易居间合同样书二零二五年
- 电工安全知识培训
- 消防员训练培训
- 电子商务的评价管理
- 建筑材料购销合同范本经典版本6篇
- 免疫预防管理工作
- 运动神经元病护理病例讨论
- 缺铁性贫血中医护理常规
- 抽屉柜施工方案范本
- 成品保护原则 成品保护基本制度
- 小班受伤了怎办安全教育
- 2024年10月自考00034社会学概论试题及答案含解析
- 【MOOC】儿科学-滨州医学院 中国大学慕课MOOC答案
- 八年级信息技术上学期 第三课wps的辅助功能 说课稿
- 隧洞施工安全教育培训
- 2024年度污水处理设施升级改造合同2篇
- 抗菌药物科学化管理
- 2024年设备改造更新管理制度(4篇)
- 2024年湖北宜昌猇亭区社区专职工作者招考聘用管理单位遴选500模拟题附带答案详解
- 人际交往与人际沟通
评论
0/150
提交评论