Date Date::operator+(int day)
{
Date tmp = *this;//+=改变自身,+则不改变自身,所以定义一个空对象来记录
tmp += day;
return tmp;
}
Date& Date::operator+=(int day)
{
if (_day < 0)
{
return *this -= (-day);
}
_day += day;
while (_day>GetMonthDay(_year, _month))
{
_day -= GetMonthDay(_year, _month);
++_month;
if (_month == 13)
{
++_year;
_month = 1;
}
}
return *this;
}
以上代码为Date类中日期加天数的函数重载,如果所传的日期为负数,则将其置为正后进行减等函数的复用。所传日期为正,则是当前日期加上所传日期,之后用循环不断使月数加加直到天数小于当前并返回this指针,对于加的实现只需复用加等即可。