《继承和派生实验报告(共7页).doc》由会员分享,可在线阅读,更多相关《继承和派生实验报告(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验目的与要求:1. 掌握类的继承与派生关系以及实验方法,理解类的层次结构。2. 掌握派生类构造函数初始化基类成员和对象成员的方法。3. 掌握内联函数和默认函数。4. 掌握赋值兼容原则,掌握派生类的复制构造函数和赋值运算符的定义。实验过程及内容:1. 实践教程实验二十二P81范例:定义一个继承与派生关系的类体系,在派生类中访问基类成员。 先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员; 以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数; 定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方
2、式,因为有两个端点,不能用派生。编程测试所定义的类体系。本实验教程中有源码,请自行运行,体会和熟悉继承与派生的基本概念及实现方法,掌握派生类构造函数初始化基类成员和对象成员的方法等。2. 实践教程P83编程:多层派生练习,由上题Point类和Circle类继续派生出Cylinder类。要求计算圆柱的底面积、侧面积、全面积和体积。请编写所有完整的成员函数,并编写主函数进行验证。数据处理1.(1) (2)j结果报错,原因是派生类中的成员函数不能访问基类中的私有成员。(3)在Line类中添加两个数据成员。2. #include #include using namespace std;#define
3、 PI 3.14159class Pointfriend class Line;protected:double x, y ; public:Point()x = 0 ; y = 0 ; Point(double xv,double yv) x = xv; y = yv; double Area()return 0;void Show()coutx=x y=yPoint:operator=(cir); /在派生类中定义重载的拷贝赋值操作符有固定的标准格式radius=cir.radius;return *this;double Area()return PI*radius*radius;voi
4、d Show()coutx=x y=y radius=radiusCircle : operator=(cyl); /在派生类中定义重载的拷贝赋值操作符有固定的标准格式high=cyl.high;return *this; double ceArea()return 2*PI*radius*high;double quArea()return ceArea()+2* Area();double volume()return Area()*high;void Show() coutx=x y=y radius=radius high=highendl; /访问基类的数据成员;class Line
5、Point start,end;/对象成员public:Line() /对象成员初始化Line(double xv1,double yv1,double xv2,double yv2) : start(xv1,yv1),end(xv2,yv2) double GetLength()return sqrt(start.x-end.x)*(start.x-end.x)+(start.y-end.y)*(start.y-end.y);double Area()return 0;void Show()coutstart point:n;start.Show();coutend point:n;end.
6、Show();int main()Point pt(0,0);Circle cl1(100,100,10),cl2(cl1),cl3;Cylinder h1(50,50,20,30),h2(h1),h3;Line ln1(0,0,100,100),ln2;cout点面积:pt.Area()endl;pt.Show();coutcl1圆面积:cl1.Area()endl;cl1.Show();coutcl2圆面积:cl2.Area()endl;cl2.Show();cl3=cl1;coutcl3圆面积:cl3.Area()endl;cl3.Show();couth1底面积:h1.Area()en
7、dl;couth1侧面积:h1.ceArea()endl;couth1全面积:h1.quArea()endl; couth1体积:h1.volume()endl; h1.Show(); couth2底面积:h2.Area()endl;couth2侧面积:h2.ceArea()endl;couth2全面积:h2.quArea()endl; couth2体积:h2.volume()endl; h2.Show(); h3=h1; couth3底面积:h3.Area()endl;couth3侧面积:h3.ceArea()endl;couth3全面积:h3.quArea()endl; couth3体积:h3.volume()endl; h3.Show();cout线面积:ln1. Area()t线长度:ln1. GetLength()endl;ln1.Show();ln2.Show();return 0;实验结论: 通过这次实验,我对类的继承和派生,派生类构造函数初始化基类成员和对象成员的方法,以及赋值兼容原则有了更深的理解。指导教师批阅意见:成绩评定: 指导教师签字: 年 月 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。专心-专注-专业
限制150内