实验四继承与派生实验报告一、实验目的:掌握利用单继承和多重继承的方式定义派生类的方法;深刻理解在各种继承方式下构造函数和析构函数的执行顺序;理解和掌握公有继承,私有继承和保护继承对基类成员的访问机制;理解虚基类的概念以及引入虚基类的目的和作用。二、实验时间:三、实验地点:四、实验内容:1.运行以下程序,并对运行结果进行分析#includeiostreamusingnamespacestd;classbase{intn;public:base(inta){coutconstructingbaseclassendl;n=a;coutn=nendl;}~base(){coutdesstructingbaseclassendl;}};classsubs:publicbase{basebobj;intm;public:subs(inta,intb,intc):base(a),bobj(c){coutconstructingsubclassendl;m=b;coutm=mendl;}~subs(){coutdestructingsubclassendl;}};voidmain(){subss(1,2,3);}2.设计一个圆类circle和一个桌子类table,另外设计一个圆桌类roundtable,从前2个类派生的,要求输出一个圆桌的高度,面积和颜色等数据。3.设计一个虚基类base,包含姓名和年龄私有数据成员以及相关成员函数,由它派生出领导类leader,包含职务和部门私有数据成员以及相关成员函数。再由base派生出工程师类engineer,包含职务和专业私有数据成员以及相关成员函数。然后由leader和engineer类派生出主任工程师chairman。采用一些数据进行测试。代码1:第二题:#includeiostream#includestringusingnamespacestd;classCircle{public:Circle(doubler){radius=r;}doublearea(){return(2.0*3.1415*radius*radius);}private:doubleradius;};classtable{public:table(doubleh){high=h;}doublegetHigh(){returnhigh;}private:doublehigh;};classroundtable:publicCircle,publictable{public:roundtable(doubler,doubleh,stringc):Circle(r),table(h){color=c;}voidshow(){cout圆桌高度:table::getHigh()endl;cout圆桌面积:Circle::area()endl;cout圆桌颜色:colorendl;}private:stringcolor;};intmain(){roundtabletest(2.0,3.2,红色);test.show();return0;}第三题:#includeiostream#includestringusingnamespacestd;classbase{public:base(stringna,inta){name=na;age=a;}voidshow(){cout姓名:nameendl;cout年龄:ageendl;}private:stringname;intage;};classleader:virtualpublicbase{public:leader(stringna,inta,stringj,stringsec):base(na,a){job=j;section=sec;}voidshow(){base::show();cout职务:jobendl;cout部门:sectionendl;}private:stringjob;stringsection;};classengineer:virtualpublicbase{public:engineer(stringna,inta,stringj,stringm):base(na,a){job=j;major=m;}voidshow(){cout职务:jobendl;cout专业:majorendl;}private:stringjob;stringmajor;};classchairman:publicleader,publicengineer{public:chairman(stringna,inta,stringj,stringsec,stringm):base(na,a),leader(na,a,j,sec),engineer(na,a,j,m){}voidshow(){leader::show();engineer::show();}};intmain(){chairmantest(刀锋,28,主席,行政部,现代国际关系);test.show();return0;}七、实验心得体会及问题反馈:这次学会了继承,派生类的使用,虚类的使用。其中发现许许多多的细节问题,很多小错误总找不到错误,还好最后讨论出了结果,不过总算还是勉强的掌握了,后面的知识会更加抽象,我要更加努力才行,恩恩!!