定义一个日期类Date,包括年、月、日等私有数据成员。要求为所定义的Date类设计如下重载运算符函数:

题:
定义一个日期类Date,包括年、月、日等私有数据成员。要求为所定义的Date类设计如下重载运算符函数:
Date operator+(int days);//返回一个日期加天数days后得到的日期
Date operator-(int days);//返回一个日期减去天数days后得到的日期
Int operator-(Date& b);//返回两个日期相差的天数

#include<iostream>
using namespace std;

class Date
{
private:
	int year;
	int month;
	int day;
public:
	Date(int, int, int);
	Date operator+(int days);
	Date operator-(int days);
	int operator-(Date& b);//运算符重载
	int getYear();
	int getMonth();
	int getDay();//访问器
};

Date::Date(int y = 0, int m = 0, int d = 0) :year(y), month(m), day(d) {
}//初始化列表

Date Date::operator+(int days)
{
	if (day + days > 30)
	{
		month++;
		if (month > 12)
		{
			month = 1;
			year++;
		}
		day = day + days - 30;
	}
	else
	{
		day += days;
	}

	return *this;
}//运算符重载“+”,几天后的天数

Date Date::operator-(int days)
{
	if (day - days < 0)
	{
		month--;
		if (month == 0)
		{
			month = 12;
			year--;
		}
		day = day - days + 30;
	}
	else
	{
		day -= days;
	}

	return *this;
}//运算符重载“-”,几天前的天数

int Date::operator-(Date& b)
{
	int tmpdays1 = year * 360 + month * 30 + day;
	int tmpdays2 = b.year * 360 + b.month * 30 + b.day;
	if (tmpdays1 > tmpdays2)
		return tmpdays1 - tmpdays2;
	else
		return tmpdays2 - tmpdays1;
}//运算符重载“-”,两天差距天数

int Date::getYear()
{
	return year;
}

int Date::getMonth()
{
	return month;
}

int Date::getDay()
{
	return day;
}

int main()
{
	Date date1(2020, 5, 21);
	Date date2(2020, 6, 21);
	Date date3;
	int tmpdays3;

	date3 = date1 + 3;

	cout << "Three days after date1 is: " << "(" << date3.getYear() << "," << date3.getMonth() << "," << date3.getDay() << ")" << endl;

	date3 = date2 - 3;
	cout << "Three days before date1 is: " << "(" << date3.getYear() << "," << date3.getMonth() << "," << date3.getDay() << ")" << endl;

	tmpdays3 = date1 - date2;
	cout << "Two days apart: " << tmpdays3 << " days" << endl;

	return 0;
}