《继承和派生习题与解析ppt课件.ppt》由会员分享,可在线阅读,更多相关《继承和派生习题与解析ppt课件.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。继承和派生习题与解析n1分析以下程序的执行结果#includeclassbasepublic:base()coutconstructingbaseclassendl;base()coutdestructingbaseclassendl;classsubs:publicbasepublic:subs()coutconstructingsubclassendl;subs()coutdestructingsubclassendl;voidmain()subss;严格执行突发事件上报制度、校
2、外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n解:本题说明单继承情况下构造函数和析构函数的调用顺序。这里base为基类,subs为派生类。所以输出为:constructingbaseclassconstructingsubclassdestructingsubclassdestrcutingbaseclass注意:在单继承情况下,首先调用基类的构造函数,随后调用派生类的构造函数,析构函数的调用顺序则正好相反。严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n2分析以下程序的执行结果:#inc
3、ludeclassbaseintn;public:base(inta)coutconstructingbaseclassendl;n=a;coutn=nendl;base()coutdestructingbaseclassendl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classsubs:publicbasebasebobj;intm;public:subs(inta,intb,intc):base(a),bobj(c)coutconstructingsubcassendl;m=b;coutm=mendl;subs()c
4、outdestructingsubclassendl;voidmain()subss(1,2,3);严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n解:本题说明派生类中含有对象成员情况下构造函数和析构函数的调用顺序。这里base为基类,subs为派生类,subs类的构造函数中含有对象成员。所以输出为:constrcutingbaseclassn=1constructingbaseclassn=3constructingsubclassm=2destructingsubclassdestructingbaseclassdestru
5、ctingbaseclass注意:当派生类中含有对象成员时,构造函数的调用顺序如下:1)基类的构造函数2)对象成员的构造函数3)派生类的构造函数析构函数的调用顺序与之相反严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n3分析以下程序的执行结果#includeclassApublic:intn;classB:publicA;classC:publicA;classD:publicB,publicCintgetn()returnB:n;voidmain()Dd;d.B:n=10;d.C:n=20;coutd.B:n,d.C:nend
6、l;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n解:D类是从类B和类C派生的,而类B和类C又都是从类A派生的,但各有自己的副本。所以对于对象d,d.B:n与d.C:n是两个不同的数据成员它们互无联系。所以输出为:10,20严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。4分析以下程序的执行结果#includeclassApublic:intn;classB:virtualpublicA;classC:virtualpublicA;classD:publicB,p
7、ublicCintgetn()returnB:n;voidmain()Dd;d.B:n=10;d.C:n=20;coutd.B:n,d.C:nendl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n解:D类是从类B和类C派生的,而类B和类C又都是从类A派生,但这是虚继承关系即是虚基类因此和共用一个的副本所以对于对象d,d.B:n与d.C:n是一个成员。所以输出为:20,20严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n6编写一个程序设计一个汽车类vehicle
8、,包含的数据成员有车轮个数wheels和车重weight。小车类car是它的私有派生类其中包含载人数passenger_load。卡车类truck是vehicle的私有派生类其中包含载人数passenger_load和载重量payload,每个类都有相关数据的输出方法。解:vehicle类是基类由它派生出car类和truck类将公共的属性和方法放在vehicle类中。本题程序如下:严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。#includeclassvehicle/定义汽车类protected:intwheels;/车轮数fl
9、oatweight;/重量public:vehicle(intwheels,floatweight);intget_wheels();floatget_weight();voidshow();classcar:privatevehicle/定义小车类intpassenger_load;/载人数public:car(intwheels,floatweight,intpassengers=4);intget_passengers();voidshow();严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classtruck:priva
10、tevehicle/定义卡车类intpassenger_load;/载人数floatpayload;/载重量public:truck(intwheels,floatweight,intpassengers=2,floatmax_load=24000.00);intget_passengers();floatefficiency();voidshow();vehicle:vehicle(intwheels,floatweight)vehicle:wheels=wheels;vehicle:weight=weight;intvehicle:get_wheels()returnwheels;严格执行
11、突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。floatvehicle:get_weight()returnweight/wheels;voidvehicle:show()cout车轮:wheels个endl;cout重量:weight公斤endl;car:car(intwheels,floatweight,intpassengers):vehicle(wheels,weight)passenger_load=passengers;intcar:get_passengers()returnpassenger_load;严格执行突发事件上
12、报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。voidcar:show()cout车型:小车endl;vehicle:show();cout载人:passenger_load人endl;coutendl;truck:truck(intwheels,floatweight,intpassengers,floatmax_load):vehicle(wheels,weight)passenger_load=passengers;payload=max_load;inttruck:get_passengers()returnpassenger_load;
13、floattruck:efficiency()returnpayload/(payload+weight);严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。voidtruck:show()cout车型:卡车endl;vehicle:show();cout载人:passenger_load人endl;cout效率:efficiency()endl;coutendl;voidmain()carcar1(4,2000,5);trucktru1(10,8000,3,340000);cout输出结果endl;car1.show();tru1
14、.show();严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n输出结果车型:小车车轮:4个重量:2000公斤载人:5人车型:卡车车轮:10个重量:8000公斤载人:3人效率:0977012严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n7设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。解:circle类包含私有数据成员radius和求圆面积的成员函数getare
15、a();table类包含私有数据成员height和返回高度的成员函数getheight()。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。本题程序如下:严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。#include#includeclasscircledoubleradius;public:circle(doubler)radius=r;doublegetarea()returnradius*radius*3.14;classtabledoubleheight;publi
16、c:table(doubleh)height=h;doublegetheight()returnheight;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classroundtable:publictable,publiccirclechar*color;public:roundtable(doubleh,doubler,charc):circle(r),table(h)color=newcharstrlen(c)+1;strcpy(color,c);char*getcolor()returncolor;voidmain()r
17、oundtablert(0.8,1.2,黑色);cout圆桌属性数据:endl;cout高度:rt.getheight()米endl;cout面积:rt.getarea()平方米endl;cout颜色:rt.getcolor()endl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n本程序的执行结果如下:圆桌属性数据:高度:08米面积:45216平方米颜色:黑色严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n8设计一个虚基类base,包含姓名和年龄私有数据成员以
18、及相关的成员函数,由它派生出领导类leader,包含职务和部门私有数据成员以及相关的成员函数。再由base派生出工程师类engineer,包含职称和专业私有数据成员以及相关的成员函数。然后由leader和engineer类派生出主任工程师类chairman。采用一些数据进行测试。解:由于chairman类从leader类和engineer类派生,而leader类和engineer类都是从base类派生的,所以为了使base只存一个副本,必须采用虚拟派生的方法。本题程序如下:严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。#incl
19、ude#includeclassbase/基类char*name;/姓名intage;/年龄public:base()voidsetname(charna)name=newcharstrlen(na)+1;strcpy(name,na);voidsetage(inta)age=a;char*getname()returnname;intgetage()returnage;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classleader:virtualpublicbase/领导类char*job;/职务char*dep;/部门
20、public:leader()voidsetjob(charjb)job=newcharstrlen(jb)+1;strcpy(job,jb);voidsetdep(chardp)dep=newcharstrlen(dp)+1;strcpy(dep,dp);char*getjob()returnjob;char*getdep()returndep;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classengineer:virtualpublicbase/工程师类char*major;/专业char*prof;/职称public
21、:engineer()voidsetmajor(charmaj)major=newcharstrlen(maj)+1;strcpy(major,maj);voidsetprof(charpf)prof=newcharstrlen(pf)+1;strcpy(prof,pf);char*getmajor()returnmajor;char*getprof()returnprof;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classchairman:publicleader,publicengineer/主任工程师类;voidma
22、in()chairmanc;c.setname(李明);c.setage(42);c.setjob(处长);c.setdep(设计处);c.setmajor(电站锅炉设计);c.setprof(高级工程师);cout输出结果:endl;coutc.getname(),年龄c.getage()岁,担任c.getdep()c.getjob(),endl;coutc.getprof(),从事c.getmajor()专业。endl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n本程序的执行结果如下:输出结果:李明,年龄42岁,担任设计
23、处处长,高级工程师,从事电站锅炉设计专业。严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。12.分析以下程序的执行结果:#includeclassSampleprotected:intx;public:Sample()x=0;Sample(intval)x=val;voidoperator+()x+;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classDerived:publicSampleinty;public:Derived():Sample()y=0;De
24、rived(intval1,intval2):Sample(val1)y=val2;voidoperator-()x-;y-;voiddisp()coutx=xy=yendl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。voidmain()Derivedd(3,5);d.disp();d+;d.disp();d-;d-;d.disp();解:输出为:x=3,y=5x=4,y=5x=2,y=3严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。3分析以下程序的执行结果:
25、#includeclassAinta;public:A(inti)a=i;coutconstructingclassAendl;voidprint()coutaendl;A()coutdestructingclassAendl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classB1:publicAintbl;public:B1(inti,intj):A(i)bl=j;coutconstructingclassB1endl;voidprint()A:print();coutblendl;B1()coutdestructing
26、classB1endl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classB2:publicAintb2;public:B2(inti,intj):A(i)b2=j;coutconstructingclassB2endl;voidprint()A:print();coutb2endl;B2()coutdestructingclassB2endl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classC:publicB1,publicB2intc;publi
27、c:C(inti,intj,intk,intl,intm):B1(i,j),B2(k,l),c(m)coutconstructingclassCendl;voidprint()B1:print();B2:print();coutcendl;C()coutdestructingclassCendl;voidmain()Cc1(1,2,3,4,5);c1.print();严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。解:C类是从B1类和B2类派生的,而B1和B2类又都是从A类派生,但各有自己的副本,所有这些成员函数均有print()
28、成员函数。所以,在C的成员函数实现中,调用print()时,要加上类作用域运算符“:”。所以输出为:constructingclassAconstructingclassB1constructingclassAconstructingclassB2constructingclassC12345destructingclassCdestructingclassB2destructingclassAdestructingclassB1destructingclassA严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。n4分析以下程序执行
29、结果:#includeclassApublic:A(char*s)coutsendl;A();classB:publicApublic:B(char*sl,char*s2):A(sl)couts2endl;严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。classC:publicApublic:C(char*sl,char*s2):A(sl)couts2endl;classD:publicB,publicCpublic:D(char*sl,char*s2,char*s3,char*s4):B(sl,s2),C(sl,s3)couts4endl;main()Dd(classA,classB,classC,classD);严格执行突发事件上报制度、校外活动报批制度等相关规章制度。做到及时发现、制止、汇报并处理各类违纪行为或突发事件。解:D类是从B和C类派生的,而B和C类又都是从A类派生,但各有自己的副本。所以输出为:classAclassBclassAclassCclassD
限制150内