《2023年面向对象程序设计及c++实验报告.docx》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计及c++实验报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程名称 实验名称 实验时间 指导单位 指导教师实验报告(学年第二学期)面向对象程序设计及C+实验一:类和对象的定义及使用年3 月垄 日物联网学院Boy ::Bo y ().void Boy: : prin t ()(c o ut/zBoy: H nam e ,zage e nd 1 ;).Girl: : Girl (char N, i n t A)(str c py (n a me, N);a g e=A;Girl:Girl。).voi d G i r 1 : p rin t () .cou t VGir 1 : Vname a geendl;).v oi d Girl: VisitB o
2、y(Boy & boy) (c os nam e : “ boy. name en d 1 ;cout/zBoy, s age: Xboy. ageen d 1 ;) int mai n () .Boy a(xpx”, 19);Girl b (lai a”, 19);b. Vi s it Bo y ( a );prin t ()a. p ri n t (); r e turn 0 ;).实验报告程序的运营结果是:B o y s nam e xpxBoy s ag e : 19Boy: xpx 19G i rl: 1 ala 19Pre ss any key to co n t i nueL.
3、T人人人人UBoys name: xpxBoys age: 19Boy: xpx 19Girl: lala 19Press any key to continue将G i rl类作为Boy类的友元类,写出Girl类的成员函数Visi t B oy(Bo y &)的实 现代码。void Girl: :Vi s itBoy (Boy & b o y )(c o u tnB o ys name: b o y. n ame e n dl;coutnBoy,s age: nb o y. a g e e n dl;)实验报告 在Bo y类的某成员函数Vi s itGirl(G i rl & )中试图访问G
4、irl类的私有成员,记 录编译器给出的错误信息,与对比,你能得出友元的什么特性? 友元关系是单向的,不具有互换性在上面代码的基础上,在Girl类的定义中,增长一行代码:friend Boy;在主函数中 通过Boy类对象.V i sitGi r 1 (Gi r 1类对象)的形式输出Girl类对象的信息。编译的结 果是?写出这一步你的主函数代码,规定分别用友元函数Gir 1类对象.VisitB o y(B o y类对象);和Boy类对象.Vis i t Gir 1 (Gi r 1类对象);和输出两个类对象的信息。D :Microsoft Visu a 1 S t udi o MyP r o je
5、c ts 实验二e x p3_L c p p|1 4 |e r r or: n o void Gi r 1 : :Vi s i t Bo y (Bo y &) m e mber fu n ct i on deci a re d in class GiiT|Gl. VisitBoy(B2);B 2. VisitG i r 1 (G 1);输出:G irl con s truct i ngBoy construe t i ngBoy,s n a me: Jac kBoy s age: 2 2Girl s name: Mar yGi r r s age: 2 0实验报告定义一个顶层函数void Vi
6、sitBo y Girl(Boy &, Girl &),作为以上两个类的友元函数, 主函数中通过调用该函数输出男孩和女孩的信息。写出该友元函数的完整代码,以及主函 数的代码。v o id Visi t BoyGirl (Boy &boy, Gir 1 & g irl) (cout/zGi r r s name: girl. nameendl;co u t/zGirl,s age: g irl. ageendl;c out/zB o yz s nam e : bo y name e ndl; cout Boys ag e : boy. ag e V Vendl;).Visi t BoyGirl(
7、B2, Gl);实验报告四、实验小结(涉及问题和解决方法、心得体会、意见与建议等)L在题目(1)中不改变main。函数中的对象的定义方式,若取消构造函数中参 数的默认值,编译程序错误提醒信息及犯错因素是:D: M i cros oft Visu a 1 S t udioMyP r oj e ct s、实验一T ime. cpp|7|e r ror: n o matchin g func t i o n f or c a 11 to T im e : :TimeO,|D: M i cr o s o ft V isua 1 S tudioMy P r o jects实验一 T i me. cpp1
8、81 error: noma tching func t ion for c all to Tim e : : Time(int)fD: Micro s of t Vis ual S t ud i oMyPr o jec t s实验一Time. c pp | 9|e r ror: no matching f u notion f or cal 1 t o T i me: : Time (i nt, i nt) I函数二义性2 .在题目(1 )中假如删除类中自定义的构造函数,仅使用系统默认构造函数,再编 译,程序错误提醒信息及犯错因素是:D:Microsoft V is u a 1 Stu d
9、i o M y P r ojec t s 实验 一 Time, cpp171 error: no m a tc h i ng func tion for call to Time: :T i m e ()7 |D: Microsof t Vi s u al S t u d i oM y Pro j ects实验一Time, cpp error: no mate h ing function for call to Time : :Time( i nt) ID : M i crosoft V isual S t udi o MyP r oject s、实验一Tiine. c p p | 9 |
10、e r r or: no m a tchi n g f u ncti o n fo r c all to T ime: T ime (in t , i n t), ID: Mi c ros o f t V i sua 1 S t u d i oM y P r ojects实验一 Time. c p p| 10| erro r : no ma t chi n g func tion for ca 1 1 to T i me: : T ime (i n t, int, in t |构造函数实参不对的3 .在题目(1 )中恢复成的对的状态,假如将ma i n()函数中的输出语句改为: co u 对象
11、名.Ho u r :对象名.M i nut e : ” 对象名.S e c o nd PrintTime( ); ,主函数中调用,再分析此时调用构造函数和析构函数的次数。实验报告参考实验教材中相应的实验提醒部分按规定完毕程序,并回答相关问题。 规定完毕后的源程序代码如下:Winclud e us i ng n a mesp a c e s t d;c 1 as s Tim e(priva t e:.i nt Hou r , Mi nu t e, S e cond;pub 1 ic:Time(in t h=0, i nt m= 0 , in t s =0);,Time( c on s t Tim
12、 e & o b );吁 T im e ();ovoid Chan g e Time(int h, in t m, int s);o i nt GetHou r ();int GetMi n u te ();nnt Get S e co n d();ovoid PrintTim e ();ovo id I ncrease 0 n eSeco n d (););T im e : :Tim e (in t h, i n t m, int s)(Hour= hMi n u te=m;S econ d =s;)T ime: :Time(co n s t Time &ob)(Hour= ob. Hour
13、;Minute= o b . M i nu t e ;Sec o nd=ob. Seco nd;)T i me::T ime ()()v oid Tim e : :Ch a n g eTime (i n t h, in t m, i nt s)(H o u r= h ;Minu t e=m;S e c on d =s;).i n t T i me: : GetHour ()(r e tu r n H o ur;)int T i me: G e tM i nu t e ()(ret u rn Minute;)int Time: :GetSecond()(retur n Se c o n d ;)
14、void Time: :Pri n t Time()(c o u t Hou r : Min u t eV: Se c o nde n dl;)vo i d T ime:In creaseOn e Second ()(Sec o nd+;)Avoid Time: :f (Tim e t)(t . P r intTimeO ;cout n call fn;*/i nt main()(Time a;.Tim e b( 1 3 );T i me c(13, 15);Time d ( 1 3, 15, 4 5);.a. Print T ime ();b . PrintTime ();c PrintT
15、i me();d. Prin t T i me ();a. C h an g e Tim e (12, 15, 45);b. Chang e T ime(12, 1 5, 45);c. Ch a n geTime (12,15, 45);,d. Ch a n g eTim e ( 1 2, 15, 4 5 );coutVV a . Ge t Hour(): a GetMinute()V:Va. GetS e cond() endl;cou t b. Get Ho u r () : z/b. Ge t Minute ()zz:/zb. G e tSe c o nd () e ndl;cou tc
16、. G e tHou r (): c. GetM i nute() :c. G e tSe c ond() end 1;coutd. G e tHour()z,: /zd. G e t M i nu t e () n :d . G e t Se c ond() e n d 1;r e t u r n 0;).程序的运营结果是:0 : 0: 01 3: 0: 01 3: 15:013: 15: 4512: 15 :4512:15: 4512: 1 5:451 2:15:45Press an y ke y to continueE:C +6.0B14070519Debuggexel 口 I U_里
17、一1构造函数与析构函数的调用方式及执行顺序是: 先是构造函数然后是析构函数。调用方式是自动调用,执行顺序是先执行构造函数,待程序结束时再执行 析构函数。实验报告取消类中成员函数Inc reaceOneSecond()的注释标志为该函数补充完整,注意时间在 增长一秒情况下的进位关系。该函数的代码如下:v oid Tim e : :In c r e aseOn e Second () (i f (Second5 9 ) Second+;e 1 se i f (Secon d =59 & &Minut e=59& & Hour= 2 3) (Hour=0;Minute= 0 ;Sec o n d =
18、0;else if (S e co n d=59&Minut e =5 9 &Hour23) (M i n u te = 0;Secon d=0;H o ur+;el s e i f (S e con d=59&Minu t e 59&Hour 2 3) (Minute+;S econd=0;Hour+;)c outH o ur:/zMinut e ZZ:,ZS e con d e n dl;). 主函数中定义一个T i me类对象并调用一次f函数,观测结果填写下表:f函数的原型主函数中调用f 的语句构造函数 调用次数拷贝构造函数 调用次数析构函数 调用次数void f (Time t);F(
19、tO)112v o id f (Time &t);F(tO)101voi d f (Time*t);F (p)101通过以上结果,关于对象作形式参数、对象引用作形式参数、对象指针作形式参数时构 造函数、析构函数的调用次数及顺序,你得到什么结论?.实验报告实验题目(2)定义一个Gi r 1类和一个Boy类,这两个类中都有表达姓名、年龄的 私有成员变量,都要定义构造函数、析构函数、输出成员变量信息的公有成员函数。根据规定定义相应的类。将Girl类作为Boy类的友元类,在G i r 1类的成员函数V i sitB o y (Bo y & ) 中访问B oy类的私有成员,观测程序运营结果。在Boy类的
20、某成员函数Vi s itG i r 1 (Girl & )中试图访问Gi r 1类的私有成员, 观测编译器给出的错误信息,理解因素。主函数中对的定义两个类的对象,调用各自的成员函数实现相应功能。再将Boy类作为Girl类的友元类,在Boy类的某成员函数V i s itG i rl (Gi r 1 & )中访问G i rl类的私有成员,观测编译器给出的信息。删除两个类中的函数V i s itG i rl (Girl & ) , V i sit Boy (Boy & ),定 义一个顶层函数V i sit BoyG i r 1 (Boy &, G ir 1&),作为以上两个类的友元,通过调用该函数输
21、出男孩和女孩的信息。实验解答:定义相应的类,主函数中定义相应的类成员,调用各类的输出函数显示信息。 源程序代码如下:# inc 1 udeus i ng n a mes p ace s td;cl a ss Boy;class Girl(public:c har name 25;a i nt age;oG i rl (char N, i n t A=19);G i rl ();dvoid pri n t ();void Visi t Boy (Boy & );cla s s Boy(pub lie:.c h ar name 25;int age;Boy (c har N , int A=19);。B o y();v oi d print ();,f rien d Girl;);Boy:B o y(char N, int A)(str c p y (name, N);age=A;).