当前位置: 首页 > 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  类的日期运算、比较和输入输出等功能,确保代码在实际运行中能正确执行相关操作 。

http://www.xdnf.cn/news/672985.html

相关文章:

  • openpi π₀ 项目部署运行逻辑(五)——模型微调
  • ASP.NET Core 中JWT的基本使用
  • 分布式架构:解读不同数据一致性模型
  • ⚡ Hyperlane —— 比 Rocket 更快的 Rust Web 框架!
  • 3D草图绘制管道
  • 26考研 | 王道 | 第五章 传输层
  • AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷
  • EMQX启用单向认证的SSl/TLS连接的配置步骤
  • 如何在加密数据上实现模糊查询?技术方案全解析
  • 视觉语言多模态模型的优化
  • 调试(gdb/cgdb)
  • Python+AI Agent:解锁MCP Servers的智能潜力
  • Python学习(2) ----- Python的类型
  • 《软件工程》实战— 在线教育平台开发
  • Matlab中gcb、gcbh、gcs的区别
  • 下一代 SaaS 平台的 AI 架构重构路径——多租户 AI 服务调度 · 多角色智能辅助 · 嵌入式 AIGC 能力的融合设计
  • 学习黑客 Metasploit 主要组件之 Exploit
  • 实时同步缓存,与阶段性同步缓存——补充理解《补充》
  • 塔能科技:有哪些国内工业节能标杆案例?
  • L1-112 现代战争 - java
  • 将 ubutun 的网络模式 从NAT 改到 桥接模式后,无法上网,linux 没有IP地址 的解决方案
  • Java设计模式之代理模式详解
  • 威联通QNAP替换docker源
  • 被忽视的 App 安全入口:资源文件暴露问题与 iOS 混淆实战(含 Ipa Guard 应用经验)
  • React从基础入门到高级实战:React 核心技术 - 错误处理与错误边界:构建稳定的应用
  • Springboot引入Spring Cloud for AWS的配置中心(Parameter Store和Secrets)
  • RK3568DAYU开发板-平台驱动开发:ADC驱动
  • 火柴INIBOX专业矿机登场,碾压现有Initverse挖矿设备
  • Java构建Tree并实现节点名称模糊查询
  • C 语言学习笔记(结构体1)