运算符重载---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;elsereturn 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;
}