西加加:6-4 日期类运算符重载

定义一个日期类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;
	} 
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值