运算符重载---1
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year = 1, int month = 1, int day = 1)
{
_year = year;
_month = month;
_day = day;
}
bool operator==(const Date& x)
{
return _year == x._year
&& _month == x._month
&& _day == x._day;
}
bool IsLeapYear(int year)
{
if ((0 == year%4 && year%100 != 0)||(0 == year%400))
return true;
else
return false;
}
int GetMonthDay(int year,int month)
{
static int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if (2==month && IsLeapYear(year))
{
return 29;
}
else
{
return days[month];
}
}
Date& operator+=(int day)
{
this->_day += day;
while (_day > GetMonthDay(_year,_month))
{
_day -= GetMonthDay(_year, _month);
_month++;
if (_month==13)
{
_month = 1;
_year++;
}
}
return *this;
}
Date operator+(int day)
{
Date ret(*this);
ret._day += day;
while (ret._day > GetMonthDay(ret._year, ret._month))
{
ret._day -= GetMonthDay(ret._year, ret._month);
ret._month++;
if (ret._month == 13)
{
ret._month = 1;
ret._year++;
}
}
return ret;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1(2022,7,23);
Date d2(2022,7,24);
cout<< (d1==d2) <<endl;
d1 += 50;
Date ret=d1 + 50;
return 0;
}