C++实现日期类(Date)
本文实例为大家分享了C++实现日期类的具体代码,供大家参考,具体内容如下
#include#include usingnamespacestd; classDate { public: //构造函数 Date(intyear=1900,intmonth=1,intday=1) :_year(year) ,_month(month) ,_day(day) { if(!IsInvalidDate(_year,_month,_day)) { _year=1900; _month=1; _day=1; } } //拷贝函数 Date(constDate&d) :_year(d._year) ,_month(d._month) ,_day(d._day) {} //析构函数 ~Date() {} //判断是不是闰年 boolIsLeapYear(intyear) { if((year%400==0)|| ((year%4==0)&&(year%100!=0))) { returntrue; } returnfalse; } //判断是不是合法日期 boolIsInvalidDate(intyear,intmonth,intday) { if((year<1)|| (month<0||month>12)|| (day<0||day>YearsOfMonth(year,month))) { returnfalse; } returntrue; } //判断当前月份多少天 intYearsOfMonth(intyear,intmonth) { intday; intdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; day=days[month]; if(month==2&&IsLeapYear(year)) { day+=1; } returnday; } //修正日期 DateToCorrect(Date&d) { while(d._day>YearsOfMonth(d._year,d._month)||d._day<=0) { if(d._day<=0) { d._day+=YearsOfMonth(d._year,(d._month-1)); if(d._month==1) { d._month=12; d._year--; } else { d._month--; } } else { d._day-=YearsOfMonth(d._year,d._month); if(d._month==12) { d._year++; d._month=1; } else { d._month++; } } } returnd; } //当前日期days天后是什么日期? Dateoperator+(intdays) { Datetmp(*this); tmp._day+=days; ToCorrect(tmp); returntmp; } //当前日期days天前是什么日期? Dateoperator-(intdays) { Datetmp(*this); tmp._day-=days; ToCorrect(tmp); returntmp; } //日期比大小 booloperator>(constDate&d) { return(_year>d._year|| (_year==d._year&&_month>d._month)|| (_year==d._year&&_month==d._month&&_day>d._day)); } booloperator<(constDate&d) { return(_year =(constDate&d) { return!(*this d); } //重载取地址符号 Date*operator&() { } //前置++ Date&operator++() { (*this)++; return*this; } //后置++ Dateoperator++(int)//通过返回值和传参区别前置和后置++ { Datetmp(*this); (*this)=(*this)+1; returntmp; } //前置-- Date&operator--() { (*this)--; return*this; } //后置-- Dateoperator--(int) { Datetmp(*this); (*this)--; returntmp; } voidDisplay() { cout<<_year<<"-"<<_month<<"-"<<_day< 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。