设计一个日期类Date,该类包含数据成员 year(年),month(月),day(日),定义构造函数。
要求: (1)重载日期加上天数的加法运算符+ (例如 给一个日期加上10天);
(2) 重载日期的自增运算符++ ;(需要满30进一天)。
#include<iostream>
using namespace std;
class Date
{
public:
Date(){year=0;month=0;day=0;}
Date(int y,int m,int d):year(y),month(m),day(d){}
void display();
Date operator+(int num);
Date operator++();//前置++
Date operator++(int);//后置++,与前置++区分,系统默认加上int
private:
int year;
int month;
int day;
};
void Date::display()
{
cout<<year<<"/"<<month<<"/"<<day;
}
Date Date::operator+(int num)
{
int flag=1;
day=day+num;
while(flag)
{
if(day>=30)
{
month++;
day=day-30;
if(month>=12)
{
year++;
month=1;
}
}
if(day<30) flag=0;
}
return Date(year,month,day);
}
Date Date::operator++()
{
day++;
if(day>=30)
{
month++;
day=1;
if(month>=12)
{
year++;
month=1;
}
}
return Date(year,month,day);
}
Date Date::operator++(int)
{
day++;
if(day>=30)
{
month++;
day=1;
if(month>=12)
{
year++;
month=1;
}
}
return Date(year,month,day);
}
int main()
{
Date d1(2018,11,13),d2;
d1.display();
cout<<"+100:";
d2=d1+100;
d2.display();
cout<<endl;
cout<<"++";
d1.display();cout<<": ";
d2=++d1;
d2.display();
cout<<endl;
d1.display();
cout<<"++: ";
d2=d1++;
d2.display();
}