[C++实战]日期类的实现

news2024/12/23 18:17:13

💖💖💖欢迎来到我的博客,我是anmory💖💖💖
又和大家见面了
欢迎来到C++探索系列
作为一个程序员你不能不掌握的知识
先来自我推荐一波
个人网站欢迎访问以及捐款
推荐阅读
如何低成本搭建个人网站
专栏:动画详解leetcode算法题
C语言知识
玉桂狗yay

日期类的申明

在对日期的申明中,我们把各种需要实现的函数申明在头文件中

#pragma once

#include <iostream>
using namespace std;

class Date
{
public:
	// 内联函数,短小且频繁调用的函数
	int GetMonthDay(int year, int month)
	{
		int monthDay[13] = { -1,31,28,31,30,31,30,31,31,30,31,30,31 };
		if ((month == 2) && ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)))
		{
			return 29;
		}
		return monthDay[month];
	}

	Date(int year = 1970, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}

	void Print();

	// 运算符+=天数
	Date& operator+=(int day);

	// 运算符-=天数
	Date& operator-=(int day);

	// 运算符+天数
	Date& operator+(int day);

	// 运算符-天数
	Date& operator-(int day);

	// 运算符前置++
	Date& operator++();

	// 运算符后置++
	Date& operator++(int);// 在括号里加一个参数来区别是后置++

	// 日期比较
	bool operator>(const Date& d);
	bool operator>=(const Date& d);
	bool operator==(const Date& d);
	bool operator<=(const Date& d);
	bool operator<(const Date& d);
	bool operator!=(const Date& d);
private:
	int _year;
	int _month;
	int _day;
};

日期加减运算

日期加法

// +=操作
Date& Date::operator+=(int day)
{
	_day += day;
	while (_day > Date::GetMonthDay(_year, _month))
	{
		_day -= Date::GetMonthDay(_year, _month);
		_month++;
		if (_month == 13)
		{
			_year++;
			_month = 1;
		}
	}
	return *this;
}

日期减法

// -=操作
Date& Date::operator-=(int day)
{
	_day -= day;
	while (_day<=0)
	{
		_month--;
		_day = GetMonthDay(_year, _month) + _day;// _day是一个负数
		if (_month == 0)
		{
			_year--;
			_month = 12;
		}
	}
	return *this;
}

日期比较的实现

小于

// 日期比较
bool Date::operator<(const Date& d)
{
	if (_year < d._year)
	{
		return true;
	}
	else if (_year == d._year)
	{
		if (_month < d._month)
		{
			return true;
		}
		else if (_month == d._month)
		{
			if (_day < d._day)
			{
				return true;
			}
		}
	}
	return false;
}

等于

bool Date::operator==(const Date& d)
{
	if ((_year == d._year) && (_month == d._month) && (_day == d._day))
	{
		return true;
	}
	return false;
}

其他比较运算通过运算符重载实现

bool Date::operator<=(const Date& d)
{
	return *this < d || *this == d;
}

bool Date::operator>=(const Date& d)
{
	return *this > d || *this == d;
}

bool Date::operator<(const Date& d)
{
	return !(*this > d);
}

bool Date::operator!=(const Date& d)
{
	return !(*this == d);
}

结语

💖💖💖非常感谢各位的支持💖💖💖
我们共同进步
本系列持续更新,关注我,带你了解更多C++知识
下期再见
玉桂狗yay

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1948710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试--测试管理与缺陷管理

文章目录 目标重点/难点 案例引入软件测试管理定义测试组织的定义独立组织测试的优缺点 测试管理——测试计划定义测试计划的持续活动 测试管理的准则出口准则入口准则 软件测试管理 | 测试用例的管理测试用例管理的重要性测试用例管理要解决的问题如何组织测试用例如何报告测试…

关于if return的组合来实现if else效果

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 关于if return的组合来实现if else效果 前言一、if return 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、if return // 在链表中插入节点…

Apache POI-Excel入门与实战

目录 一、了解Apache POI 1.1 什么是Apache POI 1.2 为什么要使用ApaChe POI 1.3 Apache POI应用场景 1.4 Apache POI 依赖 二、Apache POI-Excel 入门案例 2.1 写入Excel文件 2.2 读取文件 四、Apache POI实战 4.1 创建一个获取天气的API 4.2高德天气请求API与响应…

vs code解决报错 (c/c++的配置环境 远端机器为Linux ubuntu)

参考链接&#xff1a;https://blog.csdn.net/fightfightfight/article/details/82857397 https://blog.csdn.net/m0_38055352/article/details/105375367 可以按照步骤确定那一步不对&#xff0c;如果一个可以就不用往下看了 目录 一、检查一下文件扩展名 二、安装扩展包并…

秒杀案例-分布式锁Redisson、synchronized、RedLock

模拟秒杀 源码地址前期准备创建数据库表导入数据dependenciespomControllerTSeckillProductTseckillProductServiceTseckillProductServiceImplTseckillProductMapperTseckillProductMapper.xml使用JMeter压力测试开始测试超卖现象原因解决办法更改数据库库存500进行JMeter压力…

linux_top命令打印结果_PID USER PR NI VIRT RES SHR S 什么意思

top命令输出结果 含义 top 命令是 Linux 和 Unix 系统中用于实时显示系统中各个进程的资源占用情况的工具。当你运行 top 命令并查看输出结果时&#xff0c;会看到类似下面的列&#xff08;具体的列可能因 top 的版本和配置而有所不同&#xff09;&#xff1a; PID: 进程ID&a…

NSS [NSSRound#4 SWPU]ez_rce

NSS [NSSRound#4 SWPU]ez_rce CVE-2021-41773 Apache Httpd Server 路径穿越漏洞 POC: GET /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh HTTP/1.1 Host: node4.anna.nssctf.cn:28690 Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Window…

C/C++教程合集(完)

C初级教程(非常基础&#xff0c;适合入门)入门C语言只需一个星期&#xff08;星期一&#xff09;入门C语言只需一个星期&#xff08;星期二&#xff09;入门C语言只需一个星期&#xff08;星期三&#xff09;入门C语言只需一个星期&#xff08;星期四)入门C语言只需一个星期&am…

NSS [NSSRound#13 Basic]flask?jwt?

NSS [NSSRound#13 Basic]flask?jwt? 开题 注册一下 要admin才能拿flag 看看是如何进行身份验证的 是flask session flask-unsign --decode --cookie .eJwtzjESwyAMBMC_UKfghJCEP-MRICZp7bjK5O9xkX6L_aR9HXE-0_Y-rnik_TXTlsiXEhUXleKGGGuG1jbmogrCEmNirZ7BEB-VJbTfIi-26hQD…

数据库实例迁移实践

背景 随着业务发展&#xff0c;数据库实例磁盘逐渐升高&#xff0c;告警频繁&#xff0c;且后续可能会对DDL产生影响&#xff08;尤其是借助ghost等工具执行的DDL&#xff09;。 该实例有多个库&#xff0c;则需要迁移其中的一个或几个单库到其他实例&#xff0c;为什么不做分…

【NPU 系列专栏 3.1 -- - NVIDIA 的 Orin 和 Altan 和 Thor 区别】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 NVIDIA Orin、Altan 和 ThorNVIDIA Orin 简介NVIDIA Orin 主要特点NVIDIA Orin 应用场景 NVIDIA Altan 简介NVIDIA Altan 主要特点NVIDIA Altan 应用场景 NVIDIA Thor 简介NVIDIA Thor 主要特点NVIDIA Thor 应用场景 与 Hopper …

CTF-NSSCTF题单[GKCTF2020]

[GKCTF 2020]CheckIN 这道题目考察&#xff1a;php7-gc-bypass漏洞 打开这道题目&#xff0c;开始以为考察反序列化&#xff0c;但实际并不是&#xff0c;这里直接用$_REQUEST传入了参数便可以利用了。这里出现了一个eval&#xff08;&#xff09;函数&#xff0c;猜测考察命…

暑期C++ 缺省参数

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 1.缺省参数的概念 缺省参数是是声明或定义参数时为函数的参数指定一个缺省值。在调用该函数值时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参 看了上面定义后&#…

CogVLMv2环境搭建推理测试

引子 之前写过一篇CogVLM的分享&#xff0c;感兴趣的移步CogVLM/CogAgent环境搭建&推理测试-CSDN博客&#xff0c;前一阵子&#xff0c;CogVLMv2横空出世&#xff0c;支持视频理解功能&#xff0c;OK&#xff0c;那就让我们开始吧。 一、模型介绍 CogVLM2 系列模型开源了…

基于Vision Transformer的mini_ImageNet图片分类实战

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 PyTorch计算机视觉之Vision Transformer 整体结构-CSDN博客 mini_ImageNet数据集简介与下载 mini_ImageNet数据集节选自ImageNet数据集。ImageNet是一个非常有名的大型视觉数据集&#xff0c;它的建立旨在促进视觉…

旗晟机器人仪器仪表识别AI智慧算法

在当今迅猛发展的工业4.0时代&#xff0c;智能制造和自动化运维已然成为工业发展至关重要的核心驱动力。其中智能巡检运维系统扮演着举足轻重的角色。工业场景上不仅要对人员行为监督进行监督&#xff0c;对仪器仪表识别分析更是不可缺少的一个环节。那么我们说说旗晟仪器仪表识…

AI模型大比拼:Claude 3系列 vs GPT-4系列最新模型综合评测

AI模型大比拼&#xff1a;Claude 3系列 vs GPT-4系列最新模型综合评测 引言 人工智能技术的迅猛发展带来了多款强大的语言模型。本文将对六款领先的AI模型进行全面比较&#xff1a;Claude 3.5 Sonnet、Claude 3 Opus、Claude 3 Haiku、GPT-4、GPT-4o和GPT-4o Mini。我们将从性能…

【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(下)

【Gin】精准应用&#xff1a;Gin框架中工厂模式的现代软件开发策略与实施技巧(下) 大家好 我是寸铁&#x1f44a; 【Gin】精准应用&#xff1a;Gin框架中工厂模式的现代软件开发策略与实施技巧(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分&…

智能家居全在手机端进行控制,未来已来!

未来触手可及&#xff1a;智能家居&#xff0c;手机端的全控时代 艾斯视觉的观点是&#xff1a;在不远的将来&#xff0c;家&#xff0c;这个温馨的港湾&#xff0c;将不再只是我们休憩的场所&#xff0c;而是科技与智慧的结晶。想象一下&#xff0c;只需轻触手机屏幕&#xf…

如何实现CPU最大处理效率

如何实现CPU最大处理效率 CPU,或称为中央处理器,是计算机中负责执行指令和处理数据的核心部件。它的工作原理可简单概括为"取指、译码、执行、存储"四个步骤,也称为计算机的指令周期。 取指(Fetch):在取指阶段,CPU从内存中获取下一条要执行的指令,并存放在指…