#include
#include
#include
using
namespace
std;
class date
//獲取每個月的天數
int getmonthday(int year,int month)
;if(month == 2 && isleap(year))
return days[month];
}//判斷日期是否合法
bool isinvalid()
//建構函式
date(int year=1900,int month=1,int day=1)
//使用初始化列表進行初始化
:_year(year)
,_month(month)
,_day(day)
}//拷貝建構函式
date(const date& d)
//析構函式,這裡並沒有什麼好清理的,因此無需自定義乙個析構函式
//~date(){};
//賦值運算子過載
date& operator=(const date& d)
return *this;
}//==運算子的過載
bool
operator==(const date& d)
return
false;
}//!=運算子的過載(借助==的實現,==取非就是!=)
bool
operator!=(const date& d)
//>運算子的過載
bool
operator>(const date& d)
}else
if(_month > d._month)
}else
if(_year > d._year)
return
false;
}//《運算子的過載(《就是》=取非)
bool
operator
<(const date& d)
//>=運算子的過載(《取非)
bool
operator>=(const date& d)
//+=運算子的過載
date& operator+=(int day)
//一直迴圈直到天數合法為止
}return *this;
}//+運算子過載(借助+=)
date operator+(int day)
//-=運算子過載
date& operator-=(int day)
//把借的天數與當前的天數相加
//直到天數滿足要減去的天數退出迴圈
_day += getmonthday(_year,_month);
}_day-=day;
return *this;
}//-運算子過載(借助-=)
date operator-(int day)
//兩個日期的相減,差為相隔的天數
intoperator-(const date& d)
int count = 0;
while(max != min)
return flag*count;
}//前置++運算子的過載
date& operator++()
//後置++運算子的過載
date operator++(int)
//前置--運算子的過載
date& operator--()
//後置--運算子的過載
date operator--(int)
private:
int _year;
int _month;
int _day;
};void test()
//>運算子過載函式測試
++d3;
if(d3>d1)
//+=運算子過載函式測試
date d4 = d3+=3;
d4.show();
//-=運算子過載函式測試
date d5 = d3-=4;
d5.show();
// 兩個日期相減的函式測試
date d6(2018,1,1);
date d7(2018,1,10);
int ret = d7-d6;
printf("%d\n",ret);
}int main()
日期類的實現(C )
date.h define crt secure no warning 1 pragma once include include using namespace std class date date const date d year d.year month d.month day d.day...
C 日期類的實現
實現日期類,就是實現其中的幾個預設的成員函式以及一些運算子的過載的實現。使用初始化成員列表初始化年月日,並且對日期的非法性做以判斷。date date int year,int month,int day year year month month day day 這裡對日期的非法性判斷,主要 如下...
C 日期類的實現
int getmonthday int year,int month int day days month if month 2 year 4 0 year 100 0 year 400 0 return day date int year 1900 int month 1,int day 1 el...