簡單實現乙個date類,主要是運算子的過載!
首先在date類的實現過程中,需要注意以下幾點:
日期+天數:
1.加的天數為負數的情況
2.加之後的天數超過當月最大天數 ,月數+1,天數-已經加過的天數
3.月數+1之後大於12 年數+1
日期-天數:
1.減的天數為負數的情況
2.減之後的天數超過當月最大天數 ,月-1,天數-已經加過的天數
3.月數-1之後小於1 年數-1
在getmonthyear時對二月應注意特殊判斷:
if (isleapyear() && month == 2)
首先定義date.h
#pragma once
#includeusing namespace std;
class date
在date.cpp中實現函式過載
#include"date.h"
#include#includeusing namespace std;
date::date(int year, int month, int day)
:_year(year),
_month(month),
_day(day)
date::date(const date& d)
bool isleapyear()
return false;
}int getmonthyear(int year, int month)
; if (isleapyear() && month == 2)
return array[month];
}ostream& operator<<(ostream& _cout, const date& d)
istream& operator>>(istream& _cin, date& d)
date& date::operator=(const date& d) //賦值
return *this;
}bool date::operator==(const date& d)const
bool date::operator!=(const date& d)const
bool date::operator>(const date& d)const //大於
return false;
}bool date::operator>=(const date& d)const
bool date::operator<(const date& d)const ///小於
return false;
}bool date::operator<=(const date& d)const
//1.加的天數為負數的情況
//2.加之後的天數超過當月最大天數 ,月+1,天數-已經加過的天數
//3.月數+1之後大於12 年數+1
//4.剩餘天數》
date date::operator+(int day)
date tmp = *this;
tmp._day += day;
while (tmp._day > getmonthyear(tmp._year,tmp._month)) }
return tmp;
}date date::operator-(int day)
date tmp = *this;
tmp._day -= day;
while (tmp._day > getmonthyear(tmp._year, tmp._month)) }
return tmp;
}date& date::operator++() //前置++ this++
date date::operator++(int)
date& date::operator--() //前置-- this--
date date::operator--(int)
這時就基本實現了date類的基本功能,後續會新增time類,繼續完善。 日期類 Date 運算子過載簡單應用
面對日期類裡面的加加減減涉及到的進製和借位,我更傾向使用乙個儲存了每個月天數的陣列代替,雖然很佔記憶體,但是方法簡化了,而且不需要遍歷陣列,只需要拿到月份的數字,用月份的數字當下標就可以得到這個月的天數 雜湊表的簡單應用 這種方法很好用,尤其是在需要不斷的遍歷陣列的時候,可以用這種方法代替遍歷.在寫...
運算子過載 類的賦值運算子過載
下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...
運算子過載(實現CString類)
private char m pdate public 建構函式 cstring cstring 拷貝構造 cstring cstring const cstring t cstring if m pdate null deletem pdate m pdate new char strlen t ...