class
date
;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)
_year = year;
_month = month;
_day = day;
}// 拷貝建構函式
// d2(d1)
date
(const date& d)
// 賦值運算子過載
// d2 = d3 -> d2.operator=(&d2, d3)
date&
operator=(
const date& d)
return
*this;}
// 析構函式
~date()
void
print()
// 日期+=天數
// d1 += 10
// d1 += -10
date&
operator+=
(int day)
_day +
= day;
while
(_day >
getmonthday
(_year, _month))}
return
*this;}
// 日期+天數
// d + 10
date operator+(
int day)
// 日期-天數
date operator-(
int day)
// 日期-=天數
// d -= 100
// d -= -100
date&
operator-=
(int day)
_day -
= day;
while
(_day <=0)
_day +
=getmonthday
(_year, _month);}
return
*this;}
// 前置++
// ++d -> d.operator++(&d)
date&
operator++(
)// 後置++
// d++ -> d.operator++(&d, 0)
date operator++(
int)
// // 後置--
date operator--(
int)
// 前置--
date&
operator--(
)// d1 > d2
// >運算子過載
bool
operator
>
(const date& d)
else
if(_year == d._year)
else
if(_month == d._month)}}
return
false;}
// ==運算子過載
bool
operator==(
const date& d)
// 下面復用上面兩個的實現
// >=運算子過載
inline
bool
operator
>=
(const date& d)
// 《運算子過載
bool
operator
<
(const date& d)
// <=運算子過載
bool
operator
<=
(const date& d)
// !=運算子過載
bool
operator!=(
const date& d)
// d1 - d2
// 日期-日期 返回天數
intoperator-(
const date& d)
int day =0;
while
(min < max)
return day*flag;
}private
:int _year;
int _month;
int _day;
};
日期類的實現
在學習c 類的時候,日期類是最基礎也是最重要的乙個類。簡單的日期類並不複雜,但在實現的過程中主要會涉及一些c 的基本成員函式。這個 的難度主要在於如何判斷日期類的合法性,比如月份如果大於12,天數也要合法,比如二月不能閏年不能超過30天,平年28天。在自增和自減的時候,也要考慮到年份 月份和天數的變...
日期類的實現
includeusing namespace std class date 拷貝構造 s2 s1 s2 this,s1 d date const date d 賦值運算子的過載 d1 d2 d1 this,d2 d date operator const date d return this 析構,...
日期類的實現
標頭檔案 include include using namespace std class date if month 2 year 4 0 year 100 0 year 400 0 p只有當是閏年的2月才返回29天 else return monthdays month date int ye...