60天干翻C++————时间类的实现

发布时间:2024年01月17日

时间类的实现

时间类的定义

class Date
{
public:
	// 获取某年某月的天数
	int GetMonthDay(int year, int month)
	{
		static int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
		31 };
		int day = days[month];
		if (month == 2
			&& ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)))
		{
			day += 1;
		}
		return day;
	}
	// 全缺省的构造函数
	Date(int year = 1, int month = 1, int day = 1);
	// 拷贝构造函数
	// d2(d1)
	Date(const Date& d);
	// 赋值运算符重载
	// d2 = d3 -> d2.operator=(&d2, d3)
	Date& operator=(const Date& d);
	// 析构函数
	~Date();
	// 日期+=天数
	Date& operator+=(int day);
	// 日期+天数
	Date operator+(int day);
	// 日期-天数
	Date operator-(int day);
	// 日期-=天数
	Date& operator-=(int day);
	
	// 前置++
	Date& operator++();
	// 后置++
	Date operator++(int);
	
	 // 后置--
	Date operator--(int);
	// 前置--
	Date& operator--();
	// >运算符重载
	bool operator>(const Date& d);
	// ==运算符重载
	bool operator==(const Date& d);
	// >=运算符重载
	bool operator >= (const Date& d);
	// <运算符重载
	bool operator < (const Date& d);
	// <=运算符重载
	bool operator <= (const Date& d);
	// !=运算符重载
	bool operator != (const Date& d);
	// 日期-日期 返回天数
	int operator-(const Date& d);


	//打印日期
	void print();
	
private:
	//私有成员
	int _year;
	int _month;
	int _day; 

};

时间类内部实现细节

// 全缺省的构造函数
Date::Date(int year, int month, int day)
{
	_year = year;
	_month = month;
	_day = day;
}

// 析构函数
Date::~ Date()
{
	_year = _month = _day = -1;
}

    // 拷贝构造函数
	// d2(d1)
Date:: Date(const Date& d)
{
	*this = d;
}

// 赋值运算符重载
	// d2 = d3 -> d2.operator=(&d2, d3)
Date& Date:: operator=(const Date& d)
{
	_year = d._year;
	_month = d._month;
	_day = d._day;
	
	return *this;
}

// 日期+=天数
Date& Date::operator+=(int day)
{
	_day += day;

	while(_day > GetMonthDay(_year,_month))
	{
		_day=_day - GetMonthDay(_year, _month);
		_month++;

		if (_month > 12)
		{
			_year++;
			_month = 1;
		}
	}
	return *this;
}

// 日期+天数
Date Date::operator+(int day)
{
	Date tmp(*this);   //出作用域就不在了

	tmp += day;
	return tmp;
}



// 前置++
Date& Date::operator++()
{
	*this += 1;
	return *this;
}
// 后置++
Date Date::operator++(int)
{
	Date d2(*this);

	*this += 1;
	return d2;

}




void Date:: print()
{
	cout << _year << "年" << _month << "月" << _day<<"日" << endl;
}


在这里插入图片描述

文章来源:https://blog.csdn.net/qq_45849625/article/details/135647437
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。