// 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; }