当前位置: 首页 > news >正文

类和对象(3)

(本文主要讲解日期类的简单实现)

一.源文件"Date.h"

这段C++ 代码,定义了一个  Date  类。在这个类里,声明了用于输入输出的友元运算符重载函数,能方便地对日期进行流提取和流插入操作 。还包含了判断日期是否合法的函数  CheckDate  ,以及用于初始化日期对象的构造函数。这些代码结构清晰,是实现日期相关功能的基础。

 以上C++ 代码继续完善  Date  类的功能。 Print  函数用于按 “年/月/日” 格式输出日期。 GetMonthDay  函数通过断言确保输入合法,利用静态数组存储每月天数,还考虑闰年特殊情况来准确获取某月天数。此外,声明了用于日期加、减天数的运算符重载函数,为实现日期的算术运算奠定基础。

 以上C++ 代码进一步丰富  Date  类的功能。声明了前置和后置的自增、自减运算符重载函数,用于灵活改变日期值。同时,定义了一系列关系运算符重载函数,能对日期进行相等、不等、在这段C++ 代码中, Date  类的私有成员变量  _year 、 _month 、 _day  用于存储日期信息,保证数据的封装性。同时,再次声明了输入输出流运算符重载函数作为友元,这让外部流对象能方便地对  Date  对象进行读写操作,在实现数据隐藏的同时,兼顾了与外部交互的便利性 。大小比较等操作。还包括用于计算两个日期差值的运算符重载函数,让  Date  类具备了完整的日期运算和比较能力。

 以上代码中, Date  类的私有成员变量 _year 、 _month 、 _day  用于存储日期信息,保证数据的封装性。同时,再次声明了输入输出流运算符重载函数作为友元,这让外部流对象能方便地对 Date  对象进行读写操作,在实现数据隐藏的同时,兼顾了与外部交互的便利性 。

 

二.Date.cpp

 这段C++ 代码是对  Date  类运算符重载函数的实现。 operator+=  函数用于实现 “日期 + 天数” 的功能,先检查输入天数是否合法,然后将天数累加到日期的天数上,若天数超出当月天数,则自动调整月份和年份。 operator+  函数基于  operator+=  ,通过创建临时对象来实现日期相加,返回相加后的新日期对象,完善了日期加法运算的逻辑。

 这段C++ 代码实现了 Date  类中日期减天数的功能。 operator-=  函数先检查输入天数的合法性,然后从日期的天数中减去指定天数。若天数小于等于0,就向前借月,当月份减为0时调整年份并设月份为12 ,同时补充当月天数。 operator-  函数通过创建临时对象调用 operator-=  ,返回相减后的新日期对象,完整构建了日期减法运算体系。

 这段C++ 代码实现了  Date  类的自增和自减运算符重载。前置自增( operator++() )和前置自减( operator--() )运算符直接对当前对象进行加1或减1操作,并返回修改后的自身引用。后置自增( operator++(int) )和后置自减( operator--(int) )运算符则先创建当前对象的副本,对原对象进行加1或减1操作,再返回副本,体现了前置和后置运算符在操作顺序和返回值上的区别 。

 这段C++ 代码实现了  Date  类的关系运算符重载。 operator==  通过比较年、月、日判断两个日期是否相等; operator!=  借助  operator==  取反实现不等判断。 operator<  按年、月、日顺序依次比较判断是否小于。 operator<=  则基于  operator<  和  operator==  ,只要满足小于或等于其中一个条件就返回真,完善了日期之间的比较逻辑。

这段C++ 代码继续完善  Date  类的关系运算符重载。 operator>  通过对  operator<=  取反,来判断当前日期是否大于给定日期。 operator>=  则是对  operator<  取反,以此判断当前日期是否大于等于给定日期。利用已有的比较逻辑,简洁高效地实现了这两个运算符的功能,使  Date  类具备了完整的大小比较能力。 

 这段C++ 代码实现了  Date  类中 “日期 - 日期” 的运算符重载。代码先确定两个日期中的较大值  max  和较小值  min  ,并设置标志  flag  表示差值的正负方向。然后通过不断递增较小日期,同时计数,直到两个日期相等,最终返回两个日期相差的天数,其正负由  flag  决定,实现了日期差值的计算功能。

 

 这段C++ 代码实现了  Date  类的输入输出流运算符重载。 operator<<  函数用于流提取,能将  Date  对象的年、月、日信息按格式输出到流中,方便展示日期。 operator>>  函数用于流插入,提示用户输入年、月、日,从流中读取数据到  Date  对象,并利用  CheckDate  函数校验输入日期的合法性,若非法则提示错误,完善了  Date  类与输入输出流的交互功能。

 

三.test.cpp

这两段C++ 代码定义了  test01  和  test02  两个测试函数,用于检验  Date  类的日期运算功能。 test01  创建日期对象  d1  和  d2  ,对  d1  执行加法运算并输出结果,再基于  d2  进行相同操作,测试日期加法是否正常。 test02  类似,只是进行日期减法操作,通过输出结果验证减法功能的正确性,为  Date  类功能的可靠性提供测试保障。

这些C++ 代码包含  test03 、 test04 、 test05  三个测试函数。 test03  用于检验  Date  类的前置和后置自增运算符重载功能,通过创建日期对象并执行自增操作后输出结果来验证。 test04  则测试日期比较运算符,对两个不同日期对象进行相等、小于、大于比较并输出结果。 test05  专注于测试日期减法运算符,输出两个日期相减的结果,全面验证  Date  类相关运算功能的正确性。 

 

 test06  函数先计算并输出两个日期 d1  和 d2  的差值,接着从控制台读取新日期数据更新 d2  并输出,用于测试日期减法及输入功能。 main  函数依次调用多个测试函数,调试控制台输出的结果表明,各测试函数成功验证了 Date  类的日期运算、比较和输入输出等功能,确保代码在实际运行中能正确执行相关操作 。

相关文章:

  • vscode开发stm32,main.c文件中出现很多报错影响开发解决日志
  • 智能防护实战:从攻击成本看企业安全降本增效
  • 分布式架构:解读不同数据一致性模型
  • stm32f系列工程切换到H系列
  • Qwen3内置提示词模板解读
  • 企业微信内部网页开发流程笔记
  • 嵌入式学习--江协stm32day3
  • JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面
  • Java spingboot项目 在docker运行,需要含GDAL的JDK
  • 用C#最小二乘法拟合圆形,计算圆心和半径
  • LabVIEW教学用开发平台
  • 深入理解设计模式之命令模式
  • 【Web应用】基础篇04-功能详解-权限控制(创建菜单--分配角色--创建用户)
  • maven 最短路径依赖优先
  • c#基础08(数组)
  • 第十章:构建之巅 · 打包与部署的终极试炼
  • 实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.1 R语言解题
  • Docker常用操作
  • 下一代 SaaS 平台的 AI 架构重构路径——多租户 AI 服务调度 · 多角色智能辅助 · 嵌入式 AIGC 能力的融合设计
  • 欧几里得 ---> 裴蜀定理 ---> 拓展欧几里得
  • 广告业网站开发/网站维护一般怎么做
  • 开发平台技术创新联盟/南京百度快速排名优化
  • 可口可乐公司建设网站的目的是什么意思/宁波seo推广推荐公司
  • 会ps的如何做网站/游戏推广员平台
  • 个人网站需要哪些内容/建站软件
  • nas 建网站/林哥seo