C 日期類的實現

2021-08-21 07:47:26 字數 2666 閱讀 7832

實現日期類,就是實現其中的幾個預設的成員函式以及一些運算子的過載的實現。

使用初始化成員列表初始化年月日,並且對日期的非法性做以判斷。

date::date(int

year,int

month,int

day)

:_year(year)

,_month(month)

,_day(day)

}

這裡對日期的非法性判斷,主要**如下:

bool date::isvalid()

//該函式主要用來實現獲取當月的天數(受閏年的影響)

int date::getmonthday(int year,int month)

; if(month==2 && isleap(year))

return arr[month];

}//判斷該年是否是閏年

bool date::isleap(int year)

//列印函式

void date::show()

return *this;

}

主要實現了以下運算子的過載:

**如下;

== / !=

//==和!=運算子過載主要實現了判斷兩個日期是否相等。

//d1 == d2

bool date::operator==(const date& d)

return

false;

}//d1 != d2

bool date::operator!=(const date& d)

return

true;

}

//d1 > d2 判斷第乙個日期是否大於第二個日期,通過比較年月日的大小

bool date::operator>(const date& d)

}else

if(_month>d._month)

}else

if(_year>d._year)

return

false;

}// d1 >= d2 通過將大於等於轉化為 不小於

bool date::operator>=(const date& d)

//d1 <= d2 通過將小於等於轉換為 不大於

bool date::operator

<=(const date& d)

//d1 + 10 +主要時通過+=來實現

date

date

::operator

+(int day)

//d1 += 10

//這裡採取的思路:先將要加的天數加上,如果天數超過該月的天數,就將月數進一,

//並且將該月的天數減掉。如果月數已經加到大於12了,就將年進一,並且將月置一。

date

&date

::operator

+=(int day)

}return

*this;

}//d1 - 10 同樣,-也是通過-=來實現

date

date

::operator

-(int day)

//d1 -= 10

//如果月數借到0,就向年借一,並且將月置為12

//此時再進行天數之間的減法

date

&date

::operator

-=(int day)

_day+=getmonthday(_year,_month);

}_day-=day;

return

*this;

}//d1 - d2 兩個日期物件的減法,返回值是相差得天數

//採取的思路是:預設第乙個日期比第二個日期大;

//如果第乙個日期小於第二個日期,就將flag置為-1.

//讓小的那個日期一直自增至與大的日期相等時,加得次數就是相差得天數

int date

::operator

-(const date

& d)

int count=

0; while(max

!=min)

return flag*count;

}

:前置++/後置++/前置–/後置–

後置++/後置–傳引數是為了區別前置與後置得區別。

//++d1 通過+=來實現 直接改變*this值

date& date::operator++()

//d1++ 改變*this值,但是返回的是+=前的值

date

date::operator++(int)

//--d1

date

date::operator--()

//d1--

date

date::operator--(int)

運算子的過載看起來很多,但是我們實現起來如果注重一下實現的順序,就會發現實現的運算子只有幾個,其餘的運算子的過載可以依賴於其中某幾個的實現。

日期類的實現(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 日期類的實現

include include include using namespace std class date 獲取每個月的天數 int getmonthday int year,int month if month 2 isleap year return days month 判斷日期是否合法 b...

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