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