C 日期類的實現

2021-08-22 07:12:06 字數 2248 閱讀 2563

#include 

#include

#include

using

namespace

std;

class date

//獲取每個月的天數

int getmonthday(int year,int month)

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

return days[month];

}//判斷日期是否合法

bool isinvalid()

//建構函式

date(int year=1900,int month=1,int day=1)

//使用初始化列表進行初始化

:_year(year)

,_month(month)

,_day(day)

}//拷貝建構函式

date(const date& d)

//析構函式,這裡並沒有什麼好清理的,因此無需自定義乙個析構函式

//~date(){};

//賦值運算子過載

date& operator=(const date& d)

return *this;

}//==運算子的過載

bool

operator==(const date& d)

return

false;

}//!=運算子的過載(借助==的實現,==取非就是!=)

bool

operator!=(const date& d)

//>運算子的過載

bool

operator>(const date& d)

}else

if(_month > d._month)

}else

if(_year > d._year)

return

false;

}//《運算子的過載(《就是》=取非)

bool

operator

<(const date& d)

//>=運算子的過載(《取非)

bool

operator>=(const date& d)

//+=運算子的過載

date& operator+=(int day)

//一直迴圈直到天數合法為止

}return *this;

}//+運算子過載(借助+=)

date operator+(int day)

//-=運算子過載

date& operator-=(int day)

//把借的天數與當前的天數相加

//直到天數滿足要減去的天數退出迴圈

_day += getmonthday(_year,_month);

}_day-=day;

return *this;

}//-運算子過載(借助-=)

date operator-(int day)

//兩個日期的相減,差為相隔的天數

intoperator-(const date& d)

int count = 0;

while(max != min)

return flag*count;

}//前置++運算子的過載

date& operator++()

//後置++運算子的過載

date operator++(int)

//前置--運算子的過載

date& operator--()

//後置--運算子的過載

date operator--(int)

private:

int _year;

int _month;

int _day;

};void test()

//>運算子過載函式測試

++d3;

if(d3>d1)

//+=運算子過載函式測試

date d4 = d3+=3;

d4.show();

//-=運算子過載函式測試

date d5 = d3-=4;

d5.show();

// 兩個日期相減的函式測試

date d6(2018,1,1);

date d7(2018,1,10);

int ret = d7-d6;

printf("%d\n",ret);

}int main()

日期類的實現(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 日期類的實現

實現日期類,就是實現其中的幾個預設的成員函式以及一些運算子的過載的實現。使用初始化成員列表初始化年月日,並且對日期的非法性做以判斷。date date int year,int month,int day year year month month day day 這裡對日期的非法性判斷,主要 如下...

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