
作者主页: 作者主页
本篇博客专栏:C++
创作时间 :2024年6月25日


一、日期类
首先我们先来看一下通过类实现对日期的一系列处理,同时给大家说一下当中存在的一些细节问题:
1.1 GetMonthDay函数
这个函数的作用就是我们输入一个得到某一年某个月的天数,对后续的一些函数有着非常重要的作用,但我们要记得一个特殊情况,那就是闰年,因为闰年的二月是29天,非闰年是28天,注意这种情况就可以写代码了。
// 获取某年某月的天数
int GetMonthDay(int year, int month)
{
//日期数组
int MonthDayarr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//判断闰年
if (2 == month && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
{
return MonthDayarr[2] + 1;
}
else
{
return MonthDayarr[month];
}
}
这里我们要注意的点就是先判断是不是二月,不是二月我们就没有必要去判断是否是闰年了,没必要了就,这样会节省很多时间。
1.2日期类中的两种构造函数
全缺省构造:
这里我们要给大家讲两种类型的构造函数,一种是全缺省构造函数,另一种是拷贝构造函数,这两种函数不清楚是啥的话可以去看这篇博客:构造函数和全缺省构造函数
我怕们先来说全缺省构造函数:
// 全缺省的构造函数 Date(int year = 1900, int month = 1, int day = 1) { _year = year; _month = month; _day = day; //检查日期是否合法 if (!(year >= 1 && (month >= 1 && month <= 12) && (day >= 1 && day <= GetMonthDay(year, month)))) { cout << "日期非法" << endl; } }这就是全缺省构造函数,如果传过来值,就赋值,否则就用默认给定的值,在平常的写代码过程中,我还是建议大家去写这种构造函数,因为这种构造函数满足的场景更加多样,不传值也可以,传值当然也可以。
Date d1(2024, 6, 23); Date d2; Date d3(2024, 12);像这样的传值方式都是可以的
拷贝构造:
接下来看一下拷贝构造函数:
// 拷贝构造函数 // d2(d1) Date(cons

最低0.47元/天 解锁文章
1322

被折叠的 条评论
为什么被折叠?



