Разработка класса date
В указанном примере реализованы конструкторы и деструкторы,
подсчитывающие количество созданных объектов, метод print для вывода даты,
инкапсулирующие методы, возвращающие номер дня, месяца, года и метод tomorrow,
возвращающий следующую дату за текущей (не учитывающий високосные года).
#include <iostream>
#include <iomanip>
using namespace std;
int date_counter = 0;
class date
{
int m_day, m_year, m_month;
public:
date(int d=1, int m=1, int y=2017)
{
date_counter++;
m_day = d;
m_month = m;
m_year = y;
}
~date()
{
date_counter--;
}
void print()
{
cout << setw(2) << setfill('0') << m_day << "."
<< setw(2) << setfill('0') << m_month << "."
<< setw(4) << setfill('0') << m_year << endl;
}
int get_day()
{
return m_day;
}
int get_month()
{
return m_month;
}
int get_year()
{
return m_year;
}
date tomorrow()
{
date result(*this);
result.m_day++;
if (result.m_day == 32 && (result.m_month == 1 || result.m_month == 3 || result.m_month == 5 || result.m_month == 7 || result.m_month == 8 || result.m_month == 10 || result.m_month == 12) ||
result.m_day == 31 && (result.m_month == 4 || result.m_month == 6 || result.m_month == 9 || result.m_month == 11) ||
result.m_day == 29 && (result.m_month == 2))
{
result.m_day = 1;
result.m_month++;
}
if (result.m_month == 13)
{
result.m_month = 1;
result.m_year++;
}
return result;
}
};
int main()
{
date today(31, 12, 2017);
date next = today.tomorrow();
next.print();
today.print();
}