日期類的實現

2021-09-29 04:38:32 字數 2185 閱讀 4080

標頭檔案:

#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 _year=

1900

,int _month=1,

int _day=1)

//全預設的預設建構函式

}void

print()

bool

operator

<

(const date& d)

//對《號的運算子過載,判斷兩個日期的大小

else

if(year==d.year)

//年相等的判斷月

else

if(month==d.month)

//月相等的判斷天}}

return0;

}bool

operator

>

(const date& d)

//對《號的復用,取反即可。

bool

operator

<=

(const date& d)

//對《和==復用

bool

operator

>=

(const date& d)

//同理

bool

operator==(

const date& d)

//判斷是否相等返回0 或 1

bool

operator!=(

const date& d)

// == 的復用

date operator+(

int _day)

//復用+=

date operator-(

int _day)

//復用-=

date operator=(

const date& d)

date operator+=

(int _day)

day+

=_day;

//先把天數加起來,在判斷這個月當前的天數是否是合法的。

while

(day>

getmonthday

(year,month)

)//獲取當前月的天數

else

month++

;//不是的話月份++

}return

*this;}

date operator-=

(int _day)

day-

=_day;

//先減掉當前天數

while

(day<1)

//如果不夠的話,借乙個月的天數,月份減一

else

day+

=getmonthday

(year,month)

;//知道加到天數大於0為止,即日期合法

}return

*this;}

intoperator-(

const date&d)

//日期類相減

int n=0;

//計數器,也就是兩個日期相差的天數

while

(min!=max)

//讓小的加到和大的一樣為止

return flag*n;

} date operator++(

)//++和-- 邏輯一樣//返回++後的值

date operator++(

int)

//返回++之前的日期

private

:int year;

int month;

int day;

};

.cpp檔案:

#include

"date.h"

void

test()

intmain()

日期類的實現

在學習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 析構,...

日期類的實現

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 m...