實現日期類,就是實現其中的幾個預設的成員函式以及一些運算子的過載的實現。
使用初始化成員列表初始化年月日,並且對日期的非法性做以判斷。
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...