定义一个日期类Date,包含年、月、日三个数据成员, 友元函数重载自增运算符(++),实现日期的自增。
函数接口定义:
Date Date::operator++(int)
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <iostream>
using namespace std;
class Date{
private:
int year;
int month;
int day;
public:
Date();
Date operator++(int); // 申明重载的操作符,这种方法是后缀++
/*
++和--重载注意: ++和--有前后缀之分,另外下面的int只是一个占位符用来提示编译器
类名 operator++(); ++前缀 -> 调用方式: ++对象名
类名 operator--(); --前缀 -> 调用方式: --对象名
类名 operator++(int); ++后缀 -> 调用方式: 对象名++
类名 operator--(int); --后缀 -> 调用方式: 对象名--
*/
void display();
};
// 判断是否是闰年 是闰年返回1 不是返回0
int judge(int year)
{
if((year%4==0 && year%100!=0)||year%400==0)
return 1; //闰年
return 0; //非闰年
}
// 构造函数
Date::Date()
{
cout<<"请输入年、月、日:\n";
cin>>year>>month>>day;
}
/* 请在这里填写答案 */
void Date::display()
{
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
int main()
{
Date d1;
cout<<"今天是:";
d1.display();
d1++;
cout<<"明天是:";
d1.display();
}
输入样例:
在这里给出一组输入。例如:
2016 12 31
输出样例:
在这里给出相应的输出。例如:
2016-12-31
2017-1-1
代码实现:
Date Date::operator++(int)
{
switch (month)
{
case 1:case 3:case 5: case 7:case 8:case 10:
if(day==31)
{
month++;
day = 1;
}
else
{
day++;
}
break;
case 4:case 6:case 9:case 11:
if(day==30)
{
month++;
day = 1;
}
else
{
day++;
}
break;
case 2:
if(judge(year)==1)
{
if(day==29)
{
month++;
day = 1;
}
else
{
day++;
}
}
else if(judge(year)==0)
{
if(day==28)
{
month++;
day = 1;
}
else
{
day++;
}
}
break;
case 12:
if(day==31)
{
day = 1;
month = 1;
year++;
}
else
{
day++;
}
break;
}
}