实验二类的继承与派生_第1页
实验二类的继承与派生_第2页
实验二类的继承与派生_第3页
实验二类的继承与派生_第4页
实验二类的继承与派生_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实验二 类的继承与派生一、 实验目的1. 掌握类的声明和使用。2. 掌握对象的声明和使用。3. 掌握具有不同访问属性的成员的访问方式。4. 观察构造函数和析构函数的执行过程。5. 学习声明和使用类的继承关系,声明派生类;6. 熟悉不同继承方式下对基类成员的访问控制;二实验内容1. 设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。具有的属性如下:姓名 char name11、编号char number7、性别char sex3、生日birthday、身份证号

2、charid20。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。在测试程序中声明people 类的对象数组,录入数据并显示。2. 从people(人员)类派生出student(学生)类,添加属性:班号char classNO7;从people 类派生出teacher(教师)类,添加属性:职务char pship11、部门char departt21。从student 类中派生出graduate(研究生)类,添加属性:专业char subject21、导师teacher adviser;从gr

3、aduate 类和teacher 类派生出TA(助教博士生)类,重载相应的成员函数,测试这些类。三 . 实验步骤1. 程序代码第一题#include <iostream> #include <string> using namespace std; class Date /日期类 private: int year; int month; int day; public: Date() /默认构造 Date(int y,int m,int d) /带参构造 year=y; month=m; day=d; void set() /设置数据函数 cin>>yea

4、r>>month>>day; void display() /显示函数 cout<<year<<"年"<<month<<"月"<<day<<"日" ; class Person /人员类 private:string name;int num; char sex; Date birthday; char ID18; public: Person() /默认构造 Person(int n,int y,int m,int d,char id18

5、,char s='m'):birthday(y,m,d) num=n; sex=s; strcpy(ID,id); /有默认值的带参构造 Person(Person& p) /拷贝构造 name=;num=p.num; sex=p.sex; birthday=p.birthday; strcpy(ID,p.ID); void input() /输入函数 cout<<"录入数据:"<<endl; cout<<"姓名:"cin>>name;cout<<"

6、编号:" cin>>num; cout<<"性别(m/f):" cin>>sex; cout<<"生日:" birthday.set(); cout<<"身份证号:" cin>>ID; ID18='0' cout<<endl; void output() /输出函数 cout<<"编号:"<<num<<endl; cout<<"姓名:"&l

7、t;<name<<endl;cout<<"性别:"<<sex<<endl; cout<<"生日:" birthday.display(); cout<<endl; cout<<"身份证号:"<<ID<<endl; Person() /析构函数 cout<<" "<<num<<"号人员已经录入"<<endl; ; int main() P

8、erson p1; p1.input(); p1.output(); return 0; 第二题#include <iostream> #include <string> using namespace std; class Date /日期类 private: int year; int month; int day; public: Date() /默认构造 Date(int y,int m,int d) /带参构造 year=y; month=m; day=d; void set() /设置数据函数 cin>>year>>month>

9、>day; void display() /显示函数 cout<<year<<"年"<<month<<"月"<<day<<"日" ; class Person /人员类 private:string name;int num; char sex10; Date birthday; char ID18; public: Person() /默认构造 Person(int n,int y,int m,int d,char id18,char sex10):bir

10、thday(y,m,d) num=n; strcpy(ID,id); /有默认值的带参构造 Person(Person& p) /拷贝构造 name=;num=p.num; birthday=p.birthday; strcpy(ID,p.ID); void input() /输入函数 cout<<"姓名:"cin>>name;cout<<"编号:" cin>>num; cout<<"性别(男/女):" cin>>sex; cout<&l

11、t;"生日:" birthday.set(); cout<<"身份证号:" cin>>ID; ID18='0' cout<<endl; void output() /输出函数 cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl; cout<<"性别:"<<sex<<endl; cout<&l

12、t;"生日:" birthday.display(); cout<<endl; cout<<"身份证号:"<<ID<<endl; Person() /析构函数 /cout<<" "<<num<<"号人员已经录入"<<endl; ; class stduent:public Person char classno7;public:student()cout<<"*"<<endl;

13、 void input()Person:input(); cout<<"输入学号"<<endl; cin>>classno;void getno()Person:output(); cout<<"学号为:"<<classno<<endl;class teacher:public Person char pship11,departt21;public :teacher()cout<<"*"<<endl; void input()Person

14、:input();cout<<"输入职务"<<endl;cin>>pship;cout<<"输入部门"<<endl;cin>>departt;void inputt()cout<<"输入职务"<<endl;cin>>pship;cout<<"输入部门"<<endl;cin>>departt;void getno()Person:output(); cout<<&

15、quot;职务为:"<<pship<<endl;cout<<"部门为:"<<departt<<endl;void output ()cout<<"职务为:"<<pship<<endl;cout<<"部门为:"<<departt<<endl;class graduate:public stduent char subject21, adviser21;public :graduate() cout

16、<<""<<endl;void input()stduent:input();cout<<"输入专业:"<<endl;cin>>subject;cout<<"输入导师:"<<endl;cin>>adviser;void getno() stduent:getno(); cout<<"专业为:"<<subject<<endl; cout<<"导师为:"&l

17、t;<adviser<<endl;class TA :public graduate,teacherpublic :TA() void input()graduate:input();teacher:inputt();void getno() graduate:getno(); teacher:output(); ;int main() Person p1; stduent s;teacher t;graduate g;TA T;cout<<"请依次输入人员数据信息"<<endl;p1.input();cout<<&qu

18、ot;请输入学生数据信息"s.input();cout<<"请输入老师数据信息"t.input();cout<<"请输入研究生数据信息"g.input();cout<<"请输入助教博士数据信息" T.input(); cout<<"人员数据信息为:" p1.output(); cout<<"学生数据信息为:"s.getno();cout<<"老师信息为:"t.getno();cout<<"研究生信息为:"g.getno();cout<<"助教博士信息为:"T.getno(); 2. 调试程序第一次调试,发现没有名字的显示。后来依照其他

温馨提示

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

评论

0/150

提交评论