日期類的實現

2021-10-06 18:14:26 字數 2384 閱讀 7544

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