日期类的核心功能
要实现一个实用的日历应用,日期类需要处理哪些场景?
- 日期合法性校验
- 日期加减(支持天数、月数、年数)
- 日期差计算
- 运算符重载(
+,-,==,<<等) - 星期的计算与格式化输出
日期类的定义
我们需要三个内部成员变量来存储年、月、日,并通过成员函数实现上述功能。为了支持流式输入输出,还需要声明友元函数。
class Date {
// 友元声明,用于重载输入输出运算符
friend std::ostream& operator<<(std::ostream& _cout, const Date& d);
friend std::istream& operator>>(std::istream& _cin, Date& d);
public:
// 构造函数
Date(int year = 1, int month = 1, int day = 1);
// 拷贝构造函数
Date(const Date& d) : _year(d._year), _month(d._month), _day(d._day) {}
// 打印日期
void Print() const {
std::cout << _year << "-" << _month << "-" << _day << std::endl;
}
// 获取某年某月的天数(含闰年判断)
int GetMonthDay(int year, int month);
// 获取当前系统日期
void GetTodayData();
// 运算符重载
<( Date& x) ;
==( Date& x) ;
<=( Date& x) ;
>( Date& x) ;
>=( Date& x) ;
!=( Date& x) ;
Date& +=( days);
Date +( days) ;
Date& -=( days);
Date -( days) ;
Date& ++();
Date ++();
Date& --();
Date --();
-( Date& d) ;
:
_year;
_month;
_day;
};


