使用C++的知识点,练习一个日期类。
class Date
{
public:
//构造函数
Date(int year=1,int month=1,int day=1)
:_year(year)
,_month(month)
,_day(day)
{
assert(CheckDate());
}
//拷贝构造函数
Date(const Date& d)
{
_year=d._year;
_month=d._month;
_day=d._day;
}
void Print()
{
printf("%d年,%d月,%d日\n", _year, _month, _day);
}
private:
int _year;
int _month;
int _day;
};
构造函数设置了缺省值,变成默认构造函数,这里设置缺省值的时候还是要注意,日期肯定没有0月0日的,所以这里设置为了1。
//获取月份的天数
void GetMonthDay(int year,int month)
{
static int days[13]={0,31,30,31,30,31,30,31,31,30,31,30,31};
if(month==2 && (year%4==0 && year%100!=0 || year&400==0)){
return 29;
}
return days[month];
}
//检查日期是否正确 比如 2022,7,32
bool CheckDate()
{
if(_year>=1
&& _month>0 && month<13
&& _day>0 && _day<GetMonth(_year,_month)
)
{
return true;
}
else
{
return false;
}
}
检查月份的时候要检查一下闰年,如果是闰年二月有29天。
重载运算符
//日期加天数,天数超过一个月,进一月。超过一