#include #include using namespace std;//int Month1[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//int Month2[13] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };闰年判断函数// int Data::Leep_year(int year)// {// if ((year % 400) || ((year % 4) && !(year % 100)))// {// return 1;// }// else// {// return -1;// }// }//返回x月份的天数int GetMonthDay(int year, int month){ assert(month > 0 && month < 13); static int monthArray[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int day = monthArray[month]; if ((month == 2) && (year % 400) || (year % 4 && year % 100)) { day += 1; } return day;}class Date{public://声明display函数 void display();//Data 构造函数 Date(int year = 1900, int month = 1, int day = 1) :_year(year) ,_month(month) ,_day(day) {}//重载 - 运算符Date operator-(int n){ Date tmp(*this); tmp._day = tmp._day - n; if (n < 0) { return *this + (-n); } while (tmp._day <= 0) { if (tmp._month == 1) { tmp._month = 12; tmp._year = tmp._year - 1; } else { tmp._month = tmp._month - 1; } tmp._day = tmp._day + GetMonthDay(tmp._year, tmp._month); } return tmp;}//重载+运算符Date operator+(int n){ Date tmp(*this); if (n >= 0) //n>=0的情况 { tmp._day = tmp._day + n; while (tmp._day > GetMonthDay(tmp._year,tmp._month)) { tmp._day = tmp._day - GetMonthDay(tmp._year, tmp._month); if (tmp._month == 12) //tmp.month=12,则tmp.month+1为1 { tmp._month = 1; tmp._year = tmp._year + 1; } else { tmp._month = tmp._month + 1; } } } else //n<0的情况 { return (*this - (-n)); } return tmp;}//重载+=运算符Date& operator+=(int n){ *this = *this + n; return *this;}//重载-=运算符Date& operator-=(int day){ *this = *this - day; return *this;}//重载前置++运算符Date& operator++(){ *this = *this + 1; return *this;}//重载后置++运算符Date operator++(int){ Date tmp(*this); *this = *this + 1; return tmp;}//Date operator++(int)//{// Date tmp(*this);// ++(*this);// return tmp;//}//重载前置--运算符Date& operator--(){ *this = *this - 1; return *this;}//重载后置--运算符Date operator--(int){ Date tmp(*this); *this = *this - 1; return tmp;}//Date operator--(int)//{// Date tmp(*this);// --(*this);// return tmp;//}//重载>运算符bool operator>(const Date& d){ return (_year > d._year || (_year == d._year&&_month > d._month) || _year == d._year&&_month == d._month&&_day > d._day);}//bool operator>(const Date& d)//{// if (_year > d._year)// {// return true;// }// else if (_year == d._year)// {// if (_month > d._month)// {// return true;// }// else if(_month == d._month)// {// if (_day > d._day)// {// return true;// }// }// }// return false;//}//重载==运算符bool operator==(const Date& d){ return _year==d._year &&_month==d._month &&_day==d._day;}//重载 <运算符bool operator> <(const Date& d){ return !(*this>d || *this == d);}//重载!=运算符bool operator!=(Date& d){ return !(*this == d);}//重载<=运算符bool operator<=(const Date& d){ return *this >(istream& is, Date& d); //声明友元函数friend ostream& operator<<(ostream& os, const Date& d); //声明友元函数private: int _year; int _month; int _day;};//定义display函数void Date::display(){ cout << _year << "-" << _month << "-" << _day << endl;}//重载>>运算符istream& operator>>(istream& is, Date& d){ cout<<"请输入一个日期的年月日:"; is>>d._year>>d._month>>d._day; return is;}//重载< <运算符ostream& operator> <<(ostream& os, const Date& d){ cout< <<"-"< <<"-"< < << "请输入起点日期: " << endl; cin >> year >> month >> day; Date d1(year, month, day); cout << "请输入天数:"; cin >> day; cout << "距离"< <<"天的日期是:" << endl; d1 = d1 + day; d1.display(); } system("pause"); return 0;} 运算符ostream& operator> 运算符bool operator>