您好,欢迎访问三七文档
计算机与信息学院实验报告课程名称:C++面向对象程序设计班级:B15计信学号:15084051008姓名:陈立指导教师:潘炯光实验项目名称继承与派生实验学时实验日期2016年5月3日实验地点软件工程实验室J1303实验成绩实验目的1、掌握利用单继承和多继承的方式定义派生类的方法。2、深刻理解在各种继承方式下构造函数和析构函数的执行顺序。3、理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制。4、理解虚基类的目的和作用。实验内容实验题目一:声明一个圆类作为基类,含成员数据半径R;有成员函数:构造函数实现对基类成员数据的初始化、计算圆面积的成员函数、输出的成员函数,要求输出圆半径R。把圆类作为基类,通过公有继承,派生圆柱体类,派生类新增成员数据有高(H);新增成员函数有构造函数、计算圆柱体体积的函数、输出所有成员的函数。main()完成派生类对象的定义和相关函数的测试。实验题目二:声明一个学生类,有成员函数:学号、姓名、性别、年龄,要求有如下成员函数:构造函数,输出所有成员的函数。声明一个课程类,有成员数据:课程编号、课程名称、学时数,要求有如下成员函数:构造函数,输出所有成员的函数。将学生类和课程类作为基类,通过公有继承,派生选课类,派生类新增成员数据有:成绩;新成员函数有:构造函数,输出所有成员的函数。main()完成派生类对象的定义和相关函数的测试。实验题目三:设计一个汽车类Vehicle,包含数据成员车轮和重量,由它派生出类Car和类Truck,前者包含载客数,后者包含载重量。编写程序实现。实验设备及软件环境计算机,WindowsXP以上操作系统,VisualC++6.0软件实验方法及基本操作步骤1、#includeiostreamusingnamespacestd;classround{public:round(floatm){rad=m;}floatspace(){sp=3.14*rad*rad;returnsp;}voiddisplay(){couttheroundofinformationendl;cout该圆半径:radendl;cout该圆面积:space()endl;}protected:floatrad;floatsp;};classcylinder:publicround{public:cylinder(floatm,floatn):round(m){high=n;}voidgethigh(floatn){high=n;}floatroom(){bulk=3.14*rad*rad*high;returnbulk;}voidplay(){coutthecylinderofinformation:endl;cout该圆柱高:highendl;cout该圆柱体积:room()endl;}protected:floathigh;floatbulk;};intmain(){floatm,n;cout输入该圆半径:;cinm;cout输入该圆柱高:;cinn;cylinderss(m,n);ss.display();ss.play();}运行结果:2、#includeiostreamusingnamespacestd;#includestringclassstudent//student的类{public:student()//student默认构造函数{}voidset1(char*n,char*id,char*s,inty){name=n;ID=id;sex=s;year=y;}voidget1(){coutname:nameendl;coutID:IDendl;coutsex:sexendl;couttheageis:yearendl;}protected:stringname;stringID;stringsex;intyear;};classsubject//subject类{public:subject(){}voidset2(intsi,char*sn,intst){subid=si;subname=sn;subtime=st;}voidget2(){coutthecoursename:subnameendl;coutthecourseID:subidendl;coutthecourse'stimeis:subtimeendl;}protected:intsubid;stringsubname;intsubtime;};classssubject:publicstudent,publicsubject{public:/*ssubject():student(),subject(){}*/voidset3(intsc){score=sc;}voidget3(){coutthecourse'sscoreisscoreendl;}protected:intscore;};voidmain(){students;s.set1(liuguanhua,20120040157,nan,20);s.get1();subjectss;ss.set2(1,shuxue,48);coutendl;ss.get2();coutendl;ssubjectsss;sss.set1(fuzizhou,201200403152,nan,21);sss.set2(1,shuxue,48);sss.set3(80);sss.get1();sss.get2();sss.get3();}运行结果:3、#includeiostreamusingnamespacestd;classvehicle{public:voidget(intwe,intwh){weight=we;wheel=wh;}voiddisplay(){couttheweightisweightendl;coutthewheeliswheelendl;}protected:intweight;intwheel;};classcar:publicvehicle{public:voidget1(intm){busload=m;}voidplay1(){coutthebusloadisbusloadendl;}protected:intbusload;};classtruck:publicvehicle{public:voidget2(intm){deadweight=m;}voidplay2(){coutthedeadweightisdeadweightendl;}protected:intdeadweight;};voidmain(){vehicles;carss;trucksss;s.get(3,5);ss.get1(4);sss.get2(10);s.display();ss.play1();sss.play2();}运行结果:实验小结通过此次实验,我掌握了利用单继承和多继承的方式定义派生类的方法。理解在各种继承方式下构造函数和析构函数的执行顺序。理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制理解虚基类的目的和作用,对C++编程有了更进一步的理解!
本文标题:继承与派生
链接地址:https://www.777doc.com/doc-2065007 .html