#include<iostream>
using namespace std;
class date
{
public:
date(int year=1990,int month=1,int day=1)
:_year(year)
,_month(month)
,_day(day)
{
if(isinvalid(year,month,day))
cout<<"date right"<<endl;
else
cout<<"date error"<<endl;
}
date(const date &d)
{
_year=d._year;
_month=d._month;
_day=d._day;
}
void print()
{
cout<<_year<<"-";
cout<<_month<<"-";
cout<<_day<<endl;
}
bool isLeapyear(int year)
{
if((year%4==0)&&(year%100!=0))
{
return true;
}
else
{
if(year%400==0)
return true;
else
return false;
}
}
int Getmonthday(int year,int month)
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapyear(year)&&month==2)
return a[month-1]+1;
else
return a[month-1];
}
bool isinvalid(int year,int month,int day)
{
if(year>=1900)
{
if(month>0&&month<=12)
{
if(day>0&&(day<=Getmonthday(year,month)))
return true;
else
return false;
}
else
return false;
}
else
return false;
}
bool operator ==(const date &d)
{
if(_year==d._year)
{
if(_month==d._month)
{
if(_day==d._day)
return true;
else
return false;
}
return false;
}
else
return false;
}
bool operator !=(const date &d)
{
return !(*this==d);
}
bool operator >(const date &d)
{
if(_year>d._year)
{
return true;
}
else
{
if(_month>d._month)
return true;
else
{
if(_day>d._day)
return true;
else
return false;
}
}
}
date operator +(int day)
{
int nowday=_day+day;
while(nowday>=Getmonthday(_year,_month))
{
nowday=nowday-Getmonthday(_year,_month);
if(_month==12)
{
C++日期计算器(日期类)
最新推荐文章于 2024-07-27 23:32:11 发布
本文介绍了一个简单的C++日期计算器类的设计,包括构造函数、拷贝构造函数、日期合法性检查、月份天数获取、日期的比较及加减运算。重点讨论了运算符重载的应用,如日期的相等比较、加减操作,并提到了前置和后置++的区别。文章还提及了日期类中可能需要考虑的闰年和月份天数变化的问题。
摘要由CSDN通过智能技术生成