#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;}