使用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天。
重载运算符
//日期加天数,天数超过一个月