簡單的實現Date類 運算子過載

2021-09-02 04:57:11 字數 2113 閱讀 7732

簡單實現乙個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 ...