Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:05. Функции / Examples / 06_operator_overloading / Date
.h#ifndef DATE_H_
#define DATE_H_
#include <fstream>
#include <iomanip>
using namespace std;
enum Month {JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG,
SEP, OCT, NOV, DEC, MONTHS = 12};
struct Date
{
int dd;
Month mm;
int yyyy;
};
/* Функция для определения, является ли год переданной даты високосным */
bool isLeapYear(const Date& pDate);
/* Функция возвращает структуру типа Date, содержащую текущую дату */
Date getCurrentDate();
/* Префиксный инкремент. Увеличивает дату на 1 день,
возвращая ссылку на свой параметр */
Date& operator ++ (Date& date);
/* Постфиксный инкремент. Увеличивает дату на 1 день,
возвращая копию старого значения */
Date operator ++ (Date& date, int);
/* Префиксный декремент. Уменьшает дату на 1 день,
возвращая ссылку на свой параметр */
Date& operator -- (Date& date);
/* Постфиксный декремент. Уменьшает дату на 1 день,
возвращая копию старого значения */
Date operator -- (Date& date, int);
/* Операция вывода даты в поток в формате dd.mm.yyyy */
ostream& operator << (ostream& os, const Date& date);
/* Операция ввода даты из потока в формате dd?mm?yyyy
через символ точки, слеша, тире и некоторых других */
istream& operator >> (istream& is, Date& d);
/* Операции сравнения. Та дата меньше, которая хронологически раньше */
bool operator < (const Date& date1, const Date& date2);
bool operator > (const Date& date1, const Date& date2);
bool operator == (const Date& date1, const Date& date2);
bool operator != (const Date& date1, const Date& date2);
#endif