[7.11]为Date类重载“+”运算符,实现在某一个日期上(月、日、年)加一个天数。Date类如下:
class Date{
public:
Date(){ }
Date(int m,int d,int y)
{ month=m;
day=d;
year=y;
}
void print()
{ cout<<year<<"."<<month<<"."<<day<<endl;
}
Date operator +(int);
private:
int month,day,year;
};
#include<iostream>
using namespace std;
class Date{
public:
Date(){ }
Date(int m,int d,int y)
{
month=m;
day=d;
year=y;
}
void print()
{
cout<<year<<"."<<month<<"."<<day<<endl;
}
Date operator +(int);
private:
int month,day,year;
};
static int days[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
int isleap(int year)
{
if ((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
Date Date::operator+(int n)
{
int leap;
leap=0;
leap=isleap(this->year);
n+=this->day;
while (n>days[leap][this->month-1])
{
n-=days[leap][this->month-1];
if (++(this->month)==13)
{
this->month=1;(this->year)++;
leap=isleap(this->year);
}
}
this->day=n;
return *this;
}
int main()
{
Date d1(2,20,2000),d2;
d1.print();
d2=d1+365;
d2.print();
return 0;
}