328 Часть II. Программирование на C++

h03281.jpg

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, класс, определенный в заголовке, содержит три беззнаковых целых числа: конструктор с аргументами (день, месяц, год), заданными по умолчанию, деструктор (который нам на самом деле не нужен) и две потоковые операции.

h03282.jpg

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 )