上机作业讲解课件.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机作业讲解课件

高级语言程序设计-2 谭火彬 第四章 上机作业:运算符重载 上机实验3—实验内容 参考Fig 11.12~11.14,完善日期类CDate 对于常量成员函数,加上相应的const约束 重载流输出运算符,并去掉以前的print函数 重载自增运算符++(含前置和后置增),实现日期加1 (选做)重载流输入、加法+(能将日期递增指定的天数) 编写课程类CCourse 数据成员:课程名称name,采用标准库的string类型 数据成员:学分creditHour,int类型 提供必要的get/set函数 重载流输出运算符,输出课程信息 完善学生类CStudent 增加数据成员courseList,类型为CCourse类的指针数组(即 为CCourse *courseList[MAX_SIZE]),表示学生所选所有课程 增加数据成员courseNumber,int类型,表示实际的课程总数 重载流输出,输出学生姓名、生日以及所选的课程信息 编写main函数,测试所要求的功能 定义学生对象,并为其添加几门课程信息 主要要点 1. 日期类的前置和后置自增运算符 2. 课程类的实现 3. 课程指针数组的使用 4. 增加一门课程 5. 删除一门课程 1. 日期类自增运算符 2. 课程类的实现 3. 在学生类中添加指针数组 CCourse *courseList[MAX_SIZE] courseList是指针数组,它的每个成员(courseList[i])都是一个指针类型 courseNumber指学生对象实际所包含课程数量,应在构造函数中初始化为0 关于课程指针数组的使用规则 目标:构造一个学生选课系统 基本思路:初始化一个学生对象,开始时没有课程 采用指针存储课程,在构造学生对象的时候并不构造具体的课程对象 构造学生对象后,可以进行如下操作: 当他选了一门课后,就增加一门课 退选了某课程后,就删除该课程 4. 选课:增加一门课程 courseList是一个指针数组 要增加一门课程,需要新建一个课程对象,并将它的地址存入指针数组 下面增加课程的操作可行吗? 另一个增加课程的方法 两种方式的优缺点 addCourse(const string courseName, int creditHour) 优点:使用直观,简单 缺点:接口不稳定,学生类直接面对课程类的数据成员;当课程类发生变化时,该接口相应的需要变化 addCourse(CCourse *course) 优点:接口稳定,修改课程类成员信息不影响该函数(;支持多态特性);建议使用该方案 缺点:该指针是从外面传入,但在学生类内部需要对该指针进行维护(如释放等操作)(即在不同作用域进行操作),容易出现运行问题 4. 退选:删除一门课程 courseList是一个指针数组 数组是有序的,删除时需要考虑保持数组中元素的顺序 退选的另一个函数原型 下标运算符可以返回课程信息 析构函数中需要释放课程信息 *thbin * C++ CDate CDate::operator ++() { this-nextDay(); return *this; //返回自增后的值 } CDate CDate::operator ++(int) { CDate d(*this); this-nextDay(); return d; //返回自增前的值 } class CCourse { public: CCourse(const string n=, int ch=0) :name(n),creditHour(ch){}//构造函数 virtual ~CCourse(); //析构函数 const string getName() const {return name;} void setName(const string n) {name=n;} int getCreditHour() const {return creditHour;} void setCreditHour(int ch){creditHour=ch;} private: string name; int creditHour; }; #define MAX_SIZE 10 //每个学生最多可选择10门课程 class CStudent{…… private: CCourse *courseList[MAX_SIZE]; int courseNumber; //实际选课门数 }; CStudent CStudent::addCourse (const string courseName, int creditHour){ if(courseNumberMAX_SIZE){ c

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档