Date類的實現

2021-08-18 14:17:04 字數 2359 閱讀 6486

話說c++和c最重大的不同就是c++有了類這個型別,今天就來封裝乙個類。

日期類是一種很常用的類,但是c++就是沒有封裝,只能手動封裝了。

涉及到類的構建,一定記住上來先考慮預設成員函式

建構函式

拷貝構造

運算子過載

析構函式

日期類主要有以下功能。

1. 顯示

2. 判斷兩個日期的關係

3.日期加天數

4.日期減天數

5.日期加等天數

6.日期減等天數

7.日期自加,自減(前置和後置)

8.日期減日期

類的宣告如下:

class date

;

當類的成員函式比較過多或者很長,最好把宣告和定義分開。成員函式的定義:

//這裡單獨抽象乙個判斷閏年的函式,因為後面有多處使用

bool isleapyear(int year)

//這裡抽象乙個判斷乙個月的天數也是同理

int getmonthday(int year, int month)

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

days[2] = 29;

return days[month];

}date::date(int year, int month, int day)//建構函式

void

date::show()//顯示

bool date::operator==(date& d)//判斷是否兩個日期是否相等

bool date::operator!=(date& d) //不等於,直接復用等於取反

bool date::operator

bool date::operator>(date& d)//大於(復用小於等於)

bool date::operator<=(date& d)//小於等於(復用小於和等於)

bool date::operator>=(date& d)//大於等於(復用小於)

date& date::operator=(const

date& d)//賦值運算子

return *this;

}date

date::operator+(int day)//日期加天數

date ret = *this;

ret._day += day;

while(ret._day>getmonthday(ret._year, ret._month))

}return ret;

}date

date::operator-(int day)//日期減天數

date ret = *this;

ret._day -= day;

if(ret._day>0)

return ret;

while(ret._day <= 0)

ret._day += getmonthday(ret._year, ret._month);

}return ret;

}date& date::operator+=(int day)//加等(復用)

date& date::operator-=(int day)//減等(復用)

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

date

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

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

date

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

int date::operator-(date& d)//日期減日期

int count = 0;

while(max != min)

return count;

}

●**中有多處使用復用(復用的可以避免牽一發動全身,**易寫)●**中有多處使用引用(引用做引數和引用做返回值)●**中有const做引數這裡躺過乙個坑必須說出來,少了乙個const的坑,看下圖

測試**很簡單,就不給出了,有興趣的可以自行測試,歡迎反饋bug。

Date類的實現

類與物件以及過載函式的運用 ps 有幾個需要注意的小點就直接注釋在 中了。date.h pragma once include using namespace std class date date.cpp include date.h bool leapyear int year date dat...

C 類的實現 Date類

主要是有每月的天數問題 另外過載 days時注意不能越界 出現13月時下一年一月 過載比較時只需要實現乙個 其他的直接呼叫這個就可以了 寫到最後發現基本都是直接呼叫之前寫的東西,還是挺好寫的。include using namespace std class date date const date...

Date類,實現日期類

1 概述 類 date 表示特定的瞬間,精確到毫秒。2 構造方法 public date public date long date 把乙個long型別的毫秒值轉換成乙個日期物件 3 成員方法 public long gettime 獲取乙個日期物件物件毫秒值 public void settime...