#include<iostream>
using namespace std;
class Date
{
public:
Date(int year = 1900,int month = 1,int day = 1) //构造函数
:_year(year)
,_month(month)
,_day(day)
{
//初始化列表
//检查输入的日期是否合法
if( year < 1900
|| month < 1 || month > 12
|| day < 1 || day > GetMonthDay(year,month))
{
cout<<"IlegalDate"<<endl;
_year = 1900;
_month = 1;
_day = 1;
}
}
Date(const Date& d) //拷贝构造函数
:_year(d._year)
,_month(d._month)
,_day(d._day)
{
//初始化列表
}
~Date() //析构函数
{
//cout<<"~Date()"<<endl;
}
Date& operator = (const Date& d) //赋值运算符的重载
{
if(this != &d)
{
this->_year = d._year;
this->_month = d._month;
this->_day = d._day;
}
return *this;
}
static bool IsLeapYear(int year)
{
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
return true;
}
return false;
}
static int GetMonthDay(int year,int month)
{
static int array[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeapYear(year))
{
array[2] = 29;
}
else
{
array[2] = 28;
}
return array[month];
}
bool operator == (const Date& d)
{
return (_year == d._year
&& _month == d._month
&& _day == d._day);
}
bool operator != (const Date& d)
{
return !(*this == d);
}
bool operator > (const Date& d)
{
if(this->_year > d._year)
{
return true;
}
else if(this-&
【C++】万年历(时间计数器)
最新推荐文章于 2024-02-25 13:26:47 发布
本文介绍了一个C++实现的Date类,该类包含了日期的构造、拷贝构造、赋值运算符重载、析构函数以及友元函数。Date类支持日期合法性检查、日期加减、比较以及计算两个日期之间的天数差等功能。此外,还提供了友好的输入输出流操作符重载,便于用户交互。
摘要由CSDN通过智能技术生成