运算符重载(++,<<,>>Data类的重载)

// Data.cpp : 定义控制台应用程序的入口点。
//运算符重载 自加运算符和输出输入运算符的重载   自加运算符在日期增加时可以判断平年还是闰年

#include "stdafx.h"
#include<iostream>
using namespace std;
class MyData //定义一个Data类有三个数据成员
{private :
	int year;
	int month;
	int day;


public :
	MyData (){year=0;
	month=0;
	day=0;}
	MyData(int y,int m,int d)
	{
	year=y;
	month=m;
	day=d;
	}
	friend ostream& operator <<(ostream &,MyData &);//重载输出流 声明为友原函数
	friend istream& operator >>(istream &,MyData &);//重载输入流 声明为友原函数
	MyData operator ++( );//前置自加运算符重载函数声明

};

ostream& operator<<(ostream & output,MyData & data)//定义重载输出(Data)类流函数
{

output <<"日期是:"<<data.year<<" 年"<<data.month<<"月"<<data.day<<"日"<<endl;
return output;
}

istream& operator >>(istream & input ,MyData & data)//定义重载输入(Data)类流函数
{
cout <<"请输入年月日:"<<endl;
cout <<"请输入年: "<<endl;
input >>data.year;
cout <<"请输入月: "<<endl;
input>>data.month;
cout <<"请输入日: "<<endl;
input>>data.day;
return input;
}


MyData MyData::operator ++( )//前置自加运算符重载函数定义
{
     
	if ((year%4)==0&&((year%100)!=0))
	
			{	if(month==2)
				 {
				  if ( ++day>29)
					{	
						day=day-29;
						month++;
					
					}
				 
				 }
				 else if (month==1||month==7||month==3||month==5||month==8||month==10||month==12)
				 {
				 if ( ++day>31)
					{	
						day=day-31;
						month++;
							  if (month>12)
									{
										++year;
										month=month-12;
									}
					
					}
				 
				 
				 }
				else	if ( ++day>30)
					{	
						day=day-30;
						month++;
						   
					}
	}
		else 
		{
					if(month==2)
					 {
					  if ( ++day>28)
						{	
							day=day-28;
							month++;
						
						}
					 
					 }
					 else if (month==1||month==7||month==3||month==5||month==8||month==10||month==12)
					 {
					 if ( ++day>31)
						{	
							day=day-31;
							month++;
								  if (month>12)
										{
											++year;
											month=month-12;
										}
						
						}
					 
					 
					 }
					else	if ( ++day>30)
						{	
							day=day-30;
							month++;
							   
						}
		}
	
		return *this;

}



int main()//主函数
{
	
MyData data1(2012,12,1);
//cin >>data1;
for (int i=0;i<2000;i++)
{++data1;
cout << data1<<endl;
}
return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值