#include using namespace std;
// 1. 要考慮到日期的合法性
// 2. 考考慮閏年和非閏年
// 3. 需要用到其他輔助函式自己可以新增
class date
cout << "date(int,int,int): " << endl;
} date(const date& d)
: _year(d._year)
, _month(d._month)
, _day(d._day)
// 判斷是否為瑞年
static bool is_leap_year(int year)
return false;
} // 判斷每個月的天數
static int day_of_month(int year, int month)
int month_days[13] = ;
//if (is_leap_year(year) == true)
//month_days[2] += is_leap_year(year);
return month_days[month];
} // 檢查時間是否有效
bool check_is_valid_date()
return true;
} // 列印日期
void display()
// 求當前日期第days天後是哪一天?
date operator+(int days)
temp._day += days;
while (temp._day > day_of_month(_year, _month)) // 迴圈條件:當總天數大於乙個月的天數時
else // 否則,月份加++
}return temp;
} // 求當前日期第days天前是哪一天?
date operator-(int days)
temp._day -= days;
while (temp._day <= 0)
else
temp._day += day_of_month(_year, _month); // 沒有 += 之前這個時候 temp._day 是乙個負值
} return temp;
} // 求兩個日期之間的差值
int operator-(const date& d)
while (maxdate != mindate)
return daynum*flag; }/
// 賦值運算子過載
date& operator=(const date& d)
return *this; }
date& operator+= (int day)//過載+=(復用+)
date& operator-=(int days)
// 前置++
date& operator++()
// 後置++
date operator++(int) //int,區分前置,後置;後置++必須加標誌,這是規定
// 前置--
date& operator--()
// 後置--
date operator--(int) //int,區分前置,後置;後置--必須加標誌,這是規定
// 判斷兩個日期是否相等
bool operator==(const date& d)
// 判斷兩個日期是否不等
bool operator!=(const date& d)
bool operator>(const date& d)
bool operator>=(const date& d)
bool operator<(const date& d)
bool operator<=(const date& d)
private:
int _year;
int _month;
int _day;
};int main()
日期類之運算子過載
date.h pragma once include include using namespace std class date date const date d 拷貝構造 date bool isinvalid void show date operator const date d 賦值運算...
C 實現日期類(運算子過載)
經歷前期c語言的學習,c語言的程式設計思路是面向過程的程式設計,將所需要實現的功能封裝為每乙個功能函式,在主函式中進行呼叫 c 程式設計思想是物件導向的程式設計,相比較於c語言的程式設計,它更具有更高的安全性和可維護性,c 的特性將功能利用類進行抽象後進行封裝,之後在通過建立物件實現功能呼叫 基於基...
運算子類過載
類過載格式 函式型別 operator 運算子名稱 形參表 型引數 使用引數 1 使用 號實現複數相加 不使用類過載 include using namespace std class complex complex double r,double i complex complex add com...