1、北京午便大,*世亿号企实验报告课程名称面向对象程序设计(C+)实验项目实验5继承与派生专业软生隋班级班姓名学号指导教师祝凯实验成绩2024年5月23日实验5:继承与派生【实殴目的】1 .球旌公有维承、私有继承和保护继承.2 .掌握多级派生时的访问属性判断方法.3 .掌握第承中构造函数、析构函数询用顺序.4 .掌旌多重继承用法。【实验要求】1 .每个梗目需要提交完整代码,及运行结果被图,2 .实验心得:逐条说明自己在实验过程中遇到过的何趣,如何解决,或者自己的任何收获都可.【实验内容】1 .完成教材第5章继承与源生P2O2页第I超.练习公有继承.程序代码#inc1.udc包含输入谕出流的头文件#
2、inc1.udc包含字符申类的头文件usingnamespacesd;使用标准命名空间Stdc1.assSesex;输入函&VuiddispkiyO输出函数(cout*num:numcnd1.;输出编号cout*name:namccnd1.;输出姓名CIMIIVUsex:sex:c1.assSdK1.entkpiib1.icStudent定义StUden1.I类,公布继承自SIUdemIpub1.ic:声明以下函数公有的voidgct_va1.uc_I()cinagcaddr;输入函数VoiddiSP1.ay。阑出函数(cout*age:agcend1.:“输出年龄Co1.HWaddress:
3、addcnd1.;输出住址Iprivate:声明以下数据是私有的intage;年龄string1.dr;hintmain()IStiK1.eniIs(ud;Studagecva1.ueO:stud.gct-va1.uc_1.();SIUddisp1.ay。;s1.ud.disp1.ayO;return0:住址定义StiKkm1.类的对象SUK1.调用S1.Ud的输入函数输入编号姓名性别输入年龄和住址输出编号姓名性别输出年龄和住址is输入编号姓名性别年龄住址行例:结I(X)IZhoum20hcbci(1.1.)果截图2 .完成教材第5代继承与派生P202页第2理.练习札有继承,程序代码#inc1
4、udc包含输入谕出流的头文件#inc1.udc包含字符小类的头文件usingnamespacestd;使用标准命名空间StdC1.aSSStudent定义Student类pub1.ic:声明以下函数公有的voidget_va1.e()cinnmnanesex;输入函数v3ddispky()输出函数(coutnum:numcnd1.;输出编号cou(name:nameend1.;输出姓名CIMI1.VVsex:sexageaddr:输入年龄和住址1Ivoiddisp1.ay_1()“输出函数Idisp1.ay。;调用暴灵公有函数给出编号姓名性别COUivvage:ageend1.;输出年龄co
5、utMaddress:*addrcnd1.:输出住址Iprivate:声明以下数据是私有的image;年龄stringaddr:住址);intmain。IIStudent!stud:定义Studcnt1.类的对象studMud.gct_va1.uc_1.();输入stud.disp1.ay_1();隔出re1.um0:Iis输入编号姓名性别年龄住址行例:结I(K)IZhoum20hcbci(1.1.)果豉图3.完成教材第5章继承与派生P2O2页第3题.练习保护继承.Winc1.ude包含输入输出流的头文件#inc1.udc包含字符串类的头文件usingnamespacestd;使用标准命名空间
6、Stdc1.assStudent定义Student类fIpub1.ic:声明以下函数公有的程rkprotected:声明以下数据是保护的f件intnum:,编号Kmstringname:姓名charsex;性别:c1.assS(udcntkp11tectedStudent定义StudentI类,保护缗承自StudentI(pub1.ic:世明以下函数公有的voidgei_va1.ue10;隔入函数voiddisp1.ay1():输出函数private:声明以下数据是私有的image:年龄stringaddr:住址;voidStudentI:gei_va1.ueI()fIcinnu11namcs
7、cx;输入编号姓名性别cinagcaddr;输入年龄和住址IIvoidStuden1.kidispIay1.O输出函数j1coucmnum:Hnumcnd1.;输H1.编号couname:eend1.;输出姓名cou1.sex:sexend1.:输出性别cout,age:,agecnd1.;输出年龄coutwaddress:*addrcnd1.;输1.1.(1.tIrininain()IStodcnt1.stud;定义Studcm1.类的对望studstud.gei_va1.ue1():输入SIUd.disp1.ay10:输H1.return0;运输入编号知名性别年龄住址行例:站100Izho
8、um20hebei(回车)果曲图4.完成教材第5政继承与派生P2O4贞第6起.分析访问属性,说明:此题不交源程序,参照P1.74表5.5形式列出各成员在不同类中的访问属性程序代码类别HO310()kmf4()mnf5()Pq基类A公用保护私有公用派生类B公用保护不可访问公用公用私有保护源生类C保护保护不可访问保护保护不可访问公用保护私(1私有源生类D私有私有不可访问私私有不可访问私有私有不可访问公有保护私运行结果械图5完成教材第5章维承与派生P205页第7牌.分析构造函数调用过程.说明:此鹿除了提交源程序和运行结果收图,还要求文字分析结果是怎么输出出来的,特别是构造函数调用的过程,分析写在裁图
9、下方.程序代码析nc1.deusingnamespaces1.d;c1.assA(pub1.ic:A()a=0b=0:IA(inti)Ia=i;h=O:JA(inti,intj)a=i;b=j;voiddisp1.ay。cou(a=wab=Mb;private:inia:intb;:c1.assB:pub1.icA(pub1.ic:BO(C=0:B(inti):A(i)(c=0:)B(inti.intj):A(i.j)c=0:)B(inti.intj,intk):A(i,j)c=k;voiddisp1.ay1()disp1.ay。;cou1.c=cend1.:Iprivate:inic;:im
10、main()Bb1.:Bb2(1.);Bb3(1.3);BM(1.3.5);b1.disp1.ay10;b2.disp1.ayi():b3.disp1.ay1.();b4.disp1.ay1.();returnO;)运行结果裁图运行后搬图Bb1.;先调用构造函数A()再调用构造函数BOBb2(1.):先调用构造函数A(inti)再调用构造函数B(inti)Bb3(1.3);先调用构造函数A(inti,intj,再调用构造函数B(inti,intj)Bb4(1,3.5);先调用构造函数A(inii.inij)再调用函数B(inii.intj.i11(k)6 .完成教材第5堂维承与派生P205页第
11、8跑,分析构造、析构函数调用过程.说明:此遨除了提交源程序和运行结果截图,还要求文字分析结果跟怎么怆出出来的.特别是构造和析构函数调用的过程,分析写在截图下方。程序代码Winc1.udcusingnamespacestd;c1.assA(pub1.ic:A()(cou(ConsimctingA*运行结果旅图运行后成图在创建c1.这个对象时,首先调用A类的构造函数再调用B类的构造函数再调用C类的构选函数,因为B类是C类的基类,A类是B类的基类.在择放对型占用的空间时是C类的析构函数先被调用,加后是B类然后是A类7 .完成教材第5堂维承与派P206贞第9的.练习多重继承.inc1.1.eios1.
12、rei11c1.udcusingnamespaceMd;c1.assTeacherf包含输入输出流的头文件包含字符串类的头文件使用标准命名空间Std定义Teacher类Ipub1.ic:公用的Tcachcr(sringnane,incage、Charscx,sringad,sringphone,stringtit1.e);voiddisp1.ay();“输出函数protected:私有的stringname:“姓名KUintage;年龄住序代码charsex;性别stringami:地址stringphone:电话stringtide;;职称c1.assCadres():protected:“
13、保护的stringname:力姓名intage;年龄charsex;“性别stringami:地址stringphone:电话stringpost;职务hc1.assTCaChCJCadpub1.icCadre,pub1.icTeacherIpub1.ic:voidshow):“给出函数Tcachcr_Cadrc(stringnamc,intagc.charsex,stringarrd.stringPhOnCMringtit1.c,stringPaMjmwages);private:intwages:工资;i11main()ITcachccCadrctcachcr1.(,yhi,.22u/Bc
14、iunp/ikVkVH.,.I(XK);teacherI.show();调用输出函数.输出teacherI的信息returnO;,cachcrzz1.cachcr(stringnamc,mtagc.charscx.st11ngaad,st11ngPhonC.siringtit1.e)Inane=nan;构造函数给Teacher类的数据成员赋(his-age=age:this-scx=scx;ar!-a11d;(his-phone=hone;1.his-1.i1.1.e=ti(1.e:Cadre:Cadrc(stringnarc,imagc,charsextringarrd,stringphon
15、e,stringpost)I(his-name=nane:构造函数给Cadre类的数据成员赋值this-agc=agc:this-scx=scx;(his-ar11j=arrd;(his-phone=phone:this-post=post:Teacher_Cadre:Teacher_Cadre($tringnamejnage,charsex.sringand.siringPhOnefiringtit1.e.stringpost.intwages):Cadrc(namc.agc.scx.anrd.phonc.post).Tc3chcr(namc.agc.scx.and.phonc.tit1.e
16、)I(his-wages=wages:构造函数给TeaCheJCad代类的数据成员赋值)voidIcachcrzdisp1.ayO/disp1.ay函数帖出TzaChCr类数据成员的信息coute:nanee1.1.;coutage:*ageem1.1.:CoUtVVsex:VVSCXVVCndI:couarrd:arrdcn1.1.;cophonerphoneenJ1.;cou1.1.i1.1.eti1.1.eend1.;voidTcachcr_Cadrc:ShoWO/show函数输1.1.TCaCheJCadrC类数据成W的信息Idisp1.ay();coutpostzpjstcnd1.:coutwagcswagcscnd1.;运行结果殳图更改上方标黄字段后运行并截图姓名.年龄.件别.住址,电话,职称.职务,工资8.实验总结实监用到的知识点1 .私有维承后都变私有.2 .公布继承后不变.3 .保护继承后部变保护,4 .私有数据成员缚承后都变不可访问。遇到的问题及解决方法无实验评分细则W讦分IB则分散A正确完成全部题目.运行结果正确,注释描述脩晰,总结具体。100%B个别题目代码存在何阳,注拜描述不携清晰,总结不够具体,80%C部分题目未完成,缺少部分运行结果极图,缺少注择和总结.60%D多数题目未完成,没有运行结果截图.30%