日期類的簡單實現
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 ...