日期類的簡單實現

2021-08-08 11:53:42 字數 2584 閱讀 5910

日期類的簡單實現

1、對於一些運算子的過載

以下是我們建立乙個日期類及最基本的函式宣告。

#includeusing namespace std;

class date

date& operator=(const date& date);

date& operator++();

date operator++(int);

date& operator--();

date operator--(int);

//days天之後的日期

date operator+(int days);

// days天之前的日期

date operator-(int days);

// 兩個日期之間的距離

int operator-(const date& date);

bool operator==(const date& date);

bool operator!=(const date& date);

bool operator>(const date& date);

bool operator

int isleapyear(int year); //檢查是否是閏年

int monthdays(int year, int month); //得到月的天數

void display(); //對日期的列印

private:

int _year;

int _month;

int _day;

};

我們先來考慮簡單的自增自減,乙個日期增一減一無非就是成員day+1或者-1,這就需要考慮到每個月的天數,月初減一可能會到上個月,月末同理;對於特殊的月份2月我們還需乙個判斷閏年的函式。

如下:

int  date::isleapyear(int year)                 //檢查是否是閏年

return -1;

}int date::monthdays(int year, int month) //得到月的天數

; if (isleapyear(year))

return days[month - 1];

}

date& date:: operator++()                          //前置++

date date:: operator++(int) //後置++

date& date::operator--() //前置--

date date::operator--(int) //後置--

接下來考慮兩個日期是否相等,以及兩個日期的比較。

程式如下:

//判斷兩個日期是否相等

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

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

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

bool date::operator

最後來考慮比較難的部分,比如2023年5月20,30天後的日期怎麼算呢?我們可以這樣考慮,5.20,30天後就是5.50,減去5月的天數,就是6月19日;我們據此設乙個迴圈,直到剩下的天數小於下月的總天數。

days天前的天數同理。

對於 過載+時,若傳的引數day為負數,就相當於day天前的日期,如下文,可以直接用'-',因為我們文中會過載它; 同理

date date::operator+(int day)                    //day天後的日期

else

else

}return tmp; }}

date date:: operator-(int day) //day天前的日期

else

else

tmp._day = tmp._day + monthdays(tmp._day, tmp._month);

} return tmp; }}

對於兩個日期相差天數的問題,文中已過載好『+』等運算子,我們可以直接利用smadate+days

int date::operator-(const date& date)                      //兩個日期之間的天數

還可以擴充套件,比如,加入星期,像日曆一樣列印出來,翻頁等等,讀者可以自己嘗試。本文會不斷更新繼續完善,如有不足請多指正。

日期類的簡單實現

1.要考慮到日期的合法性,如果不合法,置成1990.1.1 2.由於在日期類,沒有用到資源的開闢,所以我們可以使用編譯器自動合成的拷貝構造,賦值運算子過載等。3.實現乙個日期加上n天後,日期為多少 4.實現乙個日期減去n天後,日期為多少 5.求兩個日期之間相隔多少天 如下 include using...

日期類的簡單實現

這篇部落格簡單實現乙個日期類,直接發 class date if month 2 year 4 0 year 100 0 year 400 0 else 這個函式的功能是輸入年和月來判斷這個月的天數 date int year 0,int month 1,int day 1 else 判斷日期是不是...

C 日期類簡單實現

剛剛開始學c 一般入門都會了解到日期類,對於日期類,我們首先是要了解。不過,如果我們能夠更加的了解它,對於後面我們學習其他類的話,會有乙個很大的幫助。現在在這兒,簡單實現一下日期類的一些介面 include using namespace std class date include date.h ...