328 Часть II. Программирование на C++
ft DATE.H — Определение простого класса календарных дат
// для демонстрации operator« и operator»
ftifndef _DATE_H
#define _DATE_H
ftinclude <iostream.h>
// Предупреждение: Никаких проверок корректности дат
// этот класс не производит.
class DATE
{
public:
DATE( unsigned int day=12, unsigned int month=2, unsigned int year=1966) ;
-DATE () ;
friend ostreams operator« ( ostreams, DATES)';.
friend istreams operator»; istreamS, DATES);• private:
unsigned int day; ' .
unsigned int month;
unsigned int year;
};
ftendif
Как видно из листинга 13.8, класс, определенный в заголовке, содержит три беззнаковых целых числа: конструктор с аргументами (день, месяц, год), заданными по умолчанию, деструктор (который нам на самом деле не нужен) и две потоковые операции.
1 // DATE.CPP — Определение членов класса DATE и небольшой тест.
2 #include <stdio.h>
3 #include "date.h"
4 // Конструктор с тремя заданными по умолчанию аргументами
5 DATE::DATE( unsigned int d, unsigned int m, unsigned int y)
6 {
7 day = d;
8 month = m;
9 year = у;
10 }
11 // Деструктор ничего не делает
12 DATE: :-DATE () {}
13 ostreams operator«(ostream& os, DATE& date)
14 {
15 // Кому там не нравятся функции stdio?
16 static char dateStr [11];
17 sprintff dateStr, "%0.2d/%0.2d/%4d", date.month, date.day, date.year);
18 return os « dateStr;
19 )