#includeusing namespace std;
class date
//拷貝構造
//s2(s1)
//s2->this,s1->d
date(const date& d)
//賦值運算子的過載
//d1 = d2; d1->this,d2->d
date& operator=(const date& d)
return *this;
}//析構,完成清理工作
~date()
//運算子的過載
// d1 < d2 --> d1.operator(&d1,d2);
bool operator < (const date& d)
else if(_year == d._year)
else if(_month == d._month)}}
return false;
}bool operator > (const date& d)
//判斷相等
//d1 == d2
bool operator==(const date& d)}}
return false;
}bool operator != (const date& d)
else
}bool operator >= (const date& d)
else
}bool operator <= (const date& d)
else
}//++d
date& operator ++ () //前置}}
date operator ++ (int) //後置
date& operator -- () //前置
_day += getmonthday(_year,_month);
}return *this;
}date operator -- (int)//後置
date& operator += (int day)
}return *this;
}date operator + (int day)
date& operator -= (int day)
}return (*this);
} date operator - (int day)
//乙個日期減乙個日期,看它們之間相差多少天
//2018-8-6 - 2018-5-23
//d1 - d2
int operator - (date& d)
while(*this > d)
count = count * flag;
if(flag == -1)
return count;
}//取位址運算子的過載
const date* operator & () const
date* operator & ()
//輸入輸出流的過載
//cout << d
<<(d);
friend ostream& operator << (ostream& out,const date& d)
friend istream& operator >> (istream& in,date& d)
//列印年月日
void display()
//獲取某一年某乙個月的天數
int getmonthday(int year,int month)
;//平年
if(year % 400 == 0 ||(year % 4 == 0 && year % 100 != 0))
return day[_month];
}private:
int _year;
int _month;
int _day;
};int main()
日期類的實現
在學習c 類的時候,日期類是最基礎也是最重要的乙個類。簡單的日期類並不複雜,但在實現的過程中主要會涉及一些c 的基本成員函式。這個 的難度主要在於如何判斷日期類的合法性,比如月份如果大於12,天數也要合法,比如二月不能閏年不能超過30天,平年28天。在自增和自減的時候,也要考慮到年份 月份和天數的變...
日期類的實現
標頭檔案 include include using namespace std class date if month 2 year 4 0 year 100 0 year 400 0 p只有當是閏年的2月才返回29天 else return monthdays month date int ye...
日期類的實現
class date 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 year year month m...