1、5)认真填写实践指导书,写出实践小结。6)在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分)7)加大实践工作量,主动完成实践指导书中的选做题目。8)掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)。上机七 继承与派生(二)一、目的1理解继承与派生、单继承与多继承的概念;2理解基类与派生类的定义及使用方法,派生类对象及初始化方法;3理解继承与派生过程中,把派生类作为基类构成类族的概念及虚基类的概念。 二、要求:1.在上课之前,每一个同学必须将题目、程序编写完毕,做好充分的准备。2.所有环节均由每位同学独立完成,严禁抄袭他人结果。?三、步骤和内容1由学生类、课程类作为基
2、类,共同派生选课类。声明一个学生类,有成员数据:学号、姓名、性别、年龄,要求有如下成员函数:构造函数、输出所有成员的函数。 声明一个课程类,有成员数据:课程编号(cnum)、课程名称(cname)、学时数(chour),要求有如下成员函数: 将学生类和课程类作为基类,通过公有继承,共同派生选课类,派生类新增成员数据有:成绩(score);新增成员函数有:main()完成派生类对象的定义和有关成员函数的测试。2、由二维坐标点类作为基类派生出圆类;再由圆类作为基类派生出圆柱体类。(提示:点类Point的数据成员为点坐标x、y,函数成员有构造函数和显示点坐标的函数show;Circle类新增数据成员
3、为圆的半径radius,其成员函数show除了显示圆心的坐标外还能显示半径大小;Cylinder类新增数据成员为圆柱体高度height,其成员函数除了显示基类的所有数据成员外,还得显示圆柱体的高度)1#include stringusing namespace std;class Studentpublic: Student(int i,string n,char s,int a) ID=i; name=n; sex=s; age=a; int getID() return ID; void show() coutID: IDendl;name:namesex:sexage:ageprivat
4、e: int ID; string name; char sex; int age;class Course Course(int cno,char * cn, float ch) cnum=cno; cname=cn; chour=ch;Course number:cnumCourse name :cnameCourse hours:chour int cnum; string cname; float chour;class SelCourse:public Student,public Course SelCourse(int i,string n,char s,int a,int cn
5、o,char* cn,float ch,float g):Student(i,n,s,a),Course(cno,cn,ch) score=g; Student:show(); Course:Score:score float score;void main() Student s1(0001,林维,S,21); (); cout Course c1(1001,高级语言程序设计,64); SelCourse sc1(9901,张帅M,22,1002,面向对象程序设计C+,56,89);2、class Point Point(int xx=0, int yy=0) x=xx; y=yy; int
6、 getX() return x; int getY() return y; void show() cout(x,y)protected: int x,y;class Circle:virtual public Point Circle(int xx=0,int yy=0,float r=1):Point(xx,yy) radius=r; int getR() return radius;圆心坐标:; Point:圆半径:radius float radius;class cylinder:public Circle cylinder(int xx=0,int yy=0,float r=1,
7、float h=2):Point(xx,yy),Circle(r) height=h; int getH() return height; Circle:圆柱体高度:height float height;int main() Point p1(1,2); Circle c1(2,2,3); cylinder cy1; system(pause); return 0;不使用虚基类。如果circle类继承point,cylinder继承circle,并且在cylinder类中Point(xx,yy),Circle(r)这样在构造函数中赋值就会报错“错误 1 error C2614: “cylinder”: 非法的成员初始化:“Point”不是基或成员 ”。修改办法一,将point设置为虚基类,修改办法二,在cylinder构造函数中通过Circle(xx,yy,r)传值给point。public PointCircle(xx,yy,r) cylinder cy1(5,6,7,8);四、思考题1、继承与派生的过程。五、结果分析六、指导教师评阅成绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1