没什么好说的,感觉除了日期加减之外,剩下的也就是函数模块
#include<iostream>
using namespace std;
class Date
{
public:
Date(int year = 2001, int month = 1,int day = 1)
{
_year = year;
_month = month;
_day = day;
}
void showDate()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
~Date()
{
}
Date(const Date& d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
Date& operator=(const Date& d)
{
if (this != &d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
return *this;
}
bool operator==(const Date& d)
{
if (_year == d._year&&_month == d._month&&_day == d._day)
{
return true;
}
return false;
}
bool operator!=(const Date& d)
{
return !(*this == d);
}
int GetYearandMonth(int year, int month)
{
int Monthday[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (IsleapYear(year) && month == 2)
{
return 29;
}
return Monthday[month-1];
}
int IsleapYear(int year)
{
if (year % 400 == 0 && year % 100 != 0 || year % 400 == 0)
{
return 1;
}
return 0;
}
Date operator+(int dayNum)
{
Date tmp(*this);
tmp._day += dayNum;
while (tmp._day > GetYearandMonth(tmp._year, tmp._month))
{
tmp._day = tmp._day - GetYearandMonth(tmp._year, tmp._month);
tmp._month = tmp._month + 1;
if (tmp._month >12)
{
tmp._year = tmp._year + 1;
tmp._month = 1;
}
}
return tmp;
}
Date& operator+=(int dayNum)
{
*this = (*this + dayNum);
return *this;
}
Date operator-(int dayNum)
{
Date dmp(*this);
dmp._day = dmp._day - dayNum;
while (dmp._day <=0)
{
dmp._day = dmp._day + GetYearandMonth(dmp._year, dmp._month);
dmp._month = dmp._month - 1;
if (dmp._month ==0)
{
--dmp._year;
dmp._month = 12;
}
}
return dmp;
}
Date operator++(int)
{
Date tmp(*this);
*this += 1;
return tmp;
}
Date operator--(int)
{
Date tmp(*this);
*this += 1;
return tmp;
}
Date& operator++()
{
*this = (*this + 1);
return *this;
}
Date& operator--()
{
*this = (*this - 1);
return *this;
}
bool operator>(const Date& d)
{
if (_year > d._year || (_year == d._year&&_month > d._month) || (_year == d._year&&_month == d._month&&_day > d._day))
{
return true;
}
return false;
}
bool operator>=(const Date& d)
{
return ((*this == d) || (*this > d));
}
bool operator<=(const Date& d)
{
return !(*this > d);
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
d1 = d1-32;
d1.showDate();
system("pause");
return 0;
}