




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+面向对象程序设计大作业利用虚函数实现多态: (1)设计Person类,要求具有用于表示姓名的保护数据成员:string szName; 实现信息打印的公有成员函数:void Print()。其中,Print函数设计为虚函数,输出的信息格式为:“Person 姓名”。 (2)从Person类派生Student类,添加用于表示学号的保护数据成员:int iNumber;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Student 姓名 学号”。 (3)从 Person类派生Teacher类,添加用于表示教龄的保护数据成员:int iYear;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Teacher 姓名 教龄”。 (4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:string szResearch;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Graduate 姓名 研究方向” 在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。如果用户输入“exit”,则退出。 输入: 对象指针数组的长度; 对象类型及对象信息(输入方式见输入样例); 要显示的对象在数组中的位置; exit。 输出: 用户要求显示的对象信息。 输入样例: 4Person ZhangStudent Zhao 200905Graduate Li 200905 DataMiningTeacher Luo 1002exit 输出样例: Person ZhangGraduate Li 200905 DataMining程序:#include #include #include using namespace std;class Personpublic: Person(const string& name); virtual void Print() const;protected: string szName;Person:Person(const string& name):szName(name)void Person:Print() const cout Person szName endl;class Student : public Personpublic: Student(const string& name, int number); void Print() const;protected: int iNumber;Student:Student(const string& name, int number):Person(name),iNumber(number)void Student:Print() const cout Student szName iNumber endl;class Teacher : public Personpublic: Teacher(const string& name, int year); void Print() const;protected: int iYear;Teacher:Teacher(const string& name, int year):Person(name),iYear(year)void Teacher:Print() const cout Teacher szName iYear endl;class Graduate : public Studentpublic: Graduate(const string& name, int number, string major); void Print() const;protected: string szResearch;Graduate:Graduate(const string& name, int number, string major): Student(name, number), szResearch(major)void Graduate:Print() const cout Graduate szName iNumber szResearch psNum; / 对象指针数组 Person* *psArr = new Person*psNum; / 对象类型、姓名、学号、教龄、研究方向 string szType, szName, szMajor; int iNumber, iYear; / 根据输入的对象信息创建不同类型的对象 for(int i=0; i szType; if(szType = Person) cin szName; psArri = new Person(szName) ; else if(szType = Student) cin szName iNumber; psArri = new Student(szName, iNumber); else if(szType = Teacher) cin szName iYear; psArri = new Teacher(szName, iYear); else if(szType = Graduate) cin szName iNumber szMajor; psArri = new Graduate(szName, iNumber, szMajor); else / 需要打印信息的对象下标 string szIdx; int objIdx; cin szIdx; while(szIdx != exit) / 对象下标 objIdx = atoi(szIdx.c_str(); objIdx = max(0, min(objIdx, psNum);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时物质的量浓度讲课文档
- 内科重点专科汇报
- 胸膜听诊语音讲解
- 2026届贵州省铜仁市石阡县民族中学化学高二第一学期期末联考模拟试题含答案
- 树叶印染工艺技术解析
- 软开度基本功讲解
- 新版反垄断法核心解读
- 信息技术自制信封
- 痛痹中医护理
- 神经系统器官讲解
- 双方签定协议书
- 2024-2025学年八年级数学下册期末培优卷(北师大版)含答案
- 2025福建福州市鼓楼区国有资产投资发展集团有限公司副总经理公开招聘1人笔试参考题库附带答案详解(10套)
- 2025年12345热线考试题库
- 多余物控制管理办法
- 2025年卫生健康行业经济管理领军人才试题
- 河南省洛阳市2024-2025学年高一下学期期末质量检测物理试卷
- 雅思介绍课件
- 《电商直播运营》教案-任务1 直播平台与岗位认知
- 反邪教宣讲课件
- 儿童呼吸机应用
评论
0/150
提交评论