c++继承与派生实验报告_第1页
c++继承与派生实验报告_第2页
c++继承与派生实验报告_第3页
c++继承与派生实验报告_第4页
c++继承与派生实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验4 继承与派生班 级学号(最后两位)姓 名成 绩 一、实验目的1. 熟练掌握类的继承,能够定义和使用类的继承关系2. 掌握派生类的声明与实现方法3. 掌握类构造函数的初始化列表与作用域分辨率的使用方法4. 理解虚基类在解决二义性问题中的作用.二、实验内容1定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。2声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。3定义一个Point类,派生出矩形类Rectangle和圆类Circle,计算各派生类对象的面积Area()。4设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。 5定义一个大学生类student,函数私有数据成员:姓名、学号、校名,并为它定义带参数的构造函数,参数带缺省值的构造函数和输出数据成员值的print()公有成员函数,另定义研究生类,它以公有继承方式派生于类student,新增加“研究方向、导师名”两个私有数据成员,并定义带参数的构造函数和输出研究生数据的print()公有成员函数。在main()函数中定义基类和派生类对象,对类进行测试。三、实验源程序、测试与结论1#include#includeclass personpublic: person (char *a,char *b,int s) name=a; sex=b; score=s; void display() cout姓名:nameendl; cout性别:sexendl; cout年龄:scoreendl; private: char *name ; char *sex ; int score;class student:public personpublic: student(char *a,char *b,int s,char *c,int c2,float s1):person(a,b,s) pro=c; cla=c2; score=s1; void display1() cout学生:endl; display(); cout专业:proendl; cout班级:claendl; cout成绩:scoreendl; coutendl; private: char *pro; int cla ; float score;class teacher: public personpublic: teacher(char *a,char *b,int s,char *p,int n,int sa):person(a,b,s) post=p; num=n; salary=sa; void display2() cout教师:endl; display(); cout工号:numendl; cout职称:postendl; cout工资:salaryendl; coutendl; private: char *post ; int num; int salary; void main() teacher g1(小张,男,38, 老师,03,6742); g1.display2(); student s1(小李,男,19,学生,04,85); s1.display1 ();2#includeiostreamusing namespace std;class Mammalpublic:Mammal()coutset Mammal classendl;Mammal()coutDelete base classendl;class Dog:public Mammalpublic:Dog()coutset Dog classn;Dog()coutDelete Dog classn;void main()Dog b;3#include using namespace std;#define PI 3.14class Pointpublic:Point() : m_x(0), m_y(0)Point(double x, double y) : m_x(x), m_y(y)Point()protected:double m_x;double m_y;class Rectangle : public Pointpublic:Rectangle() : Point()Rectangle(double x, double y) : Point(x, y)Rectangle()double Area()return m_x * m_y;class Circle : public Pointpublic:Circle() : m_r(0)Circle(double r) : m_r(r)Circle()double Area()return PI * m_r * m_r;private:double m_r;void main()double a,b,c;coutab;coutc;Rectangle rect(a, b);Circle circle(c);cout 矩形面积: rect.Area() endl;cout 圆的面积: circle.Area() endl;4#include #define PI 3.14class table;class circle;class roundtable : public table,public circlepublic: void iroundtable(double h,char *c,double r) heigh=h; radius=r; color=c; void display() cout圆桌高度:heighendl; cout圆桌面积: PI*radius*radiusendl; cout圆桌颜色: colorendl; protected: double heigh,radius; char *color;void main() roundtable t; t.iroundtable(4,blue,6); t.display();5#includestring#includeiostreamusing namespace std;class Studentchar *name;char *number;char *college;public:Student();Student(char *p1,char *p2,char *p3);void print();Student:Student(char *p1,char *p2,char *p3)name=new charstrlen(p1)+1;strcpy(name,p1);number=new charstrlen(p2)+1;strcpy(number,p2);college=new charstrlen(p3)+1;strcpy(college,p3);void Student:print()coutname:nameendl;coutnumber:numberendl;coutcollege:collegeendl;class graduate:public Studentchar *special;char *directorname;public:graduate();graduate(char *p1,char *p2,char *p3,char *sp,char *di);void print();graduate:graduate(char *p1,char *p2,char *p3,char *sp,char *di):Student(p1,p2,p3)special=new charstrlen(sp)+1;strcpy(special,sp);directorname=new charstrlen(di)+1;strcpy(directorname,di);void graduate:print()Student:print();coutspecial

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论