日期类的实现
实现日期类,就是实现其中的几个默认的成员函数以及一些运算符的重载的实现。
构造函数
使用初始化成员列表初始化年月日,并且对日期的非法性做以判断。
Date::Date(int year,int month,int day)
:_year(year)
,_month(month)
,_day(day)
{
if(!IsValid())
{
assert(false);
}
}
这里对日期的非法性判断,主要代码如下:
bool Date::IsValid()
{
return _year>=1900 &&
_month>0 && _month<13 &&
_day>0 && _day<=GetMonthDay(_year,_month);
}
//该函数主要用来实现获取当月的天数(受闰年的影响)
int Date::GetMonthDay(int year,int month)
{
int arr[13]={
0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month==2 && IsLeap(year))
{
++arr[2];
}
return arr[month];
}
//判断该年是否是闰年
bool Date::IsLeap(int year)
{
return (year%4==0 && year%100!=0) || year%400==0;
}
//打印函数
void Date::Show()
{
cout<<_year<<"-"&l