    14:	main() 
    15:	{ 
    16:	TTime appointment;     // Объект типа TTime 
    18:	appointment.month = 7; // Инициализация данных-членов объекта 
    19:	appointment.day =14;   
    20:	appointment.year = 1996; 
    21:	appointment.hour = 8; 
    22:	appointment.minute = 30; 
    23:	cout « "Appointment == "; 
    24:	appointment.Display() ; // Вызов функции-члена 
    25:	cout « '\n' ; 
    26:	return 0;                           , 
    27:	} 
    28: 
    29:	void TTime::Display(void) 
    30:	{ 
    31:	char s[32]; 
    32:	sprintf(s, "Date: %02d/%02d/%04d Time: %02d:%02d\n", 
    33:	month, day, year, hour, minute); 
    34:	cout « s ; 
    35:         }

    В строках 4-12 объявляется класс TTime. Обычно объявления классов пишутся 
в заголовочных файлах, но вы можете вставить его непосредственно в программный 
модуль, как в этом примере.
    Пропустим все до строк 29-35, где приводится реализация тела функции 
Display(). Существует два основных отличия между описанием функции-члена и 
обычной функции. 
    •   Имени функции-члена предшествует имя класса и оператор разрешения 
области видимости. Заголовок функции void TTime::Display(void) указывает 
компилятору, что Display() — член класса TTime. Поскольку имя класса однозначно 
отождествляет имя функции-члена, в программе могут быть другие функции и 
функции-члены класса с именем Display(), не вызывающие конфликтов имен. 
    •   Внутри функции-члена операторы имеют прямой доступ к членам класса. 
Например, в строках 32-33 непосредственно используются данные-члены класса 
TTime — month, year, hour и minute. 
    В основной программе класс TTime используется так же, как и любой другой 
тип данных. Сначала в строке 16, объявляется appointment, как объект типа 
TTime. Объявление создает объект класса, так называемый экземпляр типа класса. 
Класс TTime — всего лишь шаблон, схема, описывающая формат членов класса. Вы 
должны создать объект типа класс, подобный appointment, для того, чтобы 
использовать класс. 
    Далее, в строках 18-22 присваиваются значения данным-членам appointment, 
инициализируются дата и время. Затем в строке 24, вызывается функция-член 
Display(), отображающая дату и время, хранящиеся в appointment. Все эти строки 
используют оператор точки для доступа к членам объекта класса. Оператор точки 
следует использовать для ссылок на открытые данные-члены класса (которым 
предшествует спецификатор доступа public) аналогично ссылкам на члены 
структуры. Если таким членом является функция (см. строку 24), C++ вызывает 
функцию, которая обычно выполняет некоторые операции над данными-членами 
объекта класса. Например, в строке 24 вызывается функция Display() для 
отображения значения данных-членов appointment. В программе также могут быть 
другие объекты класса TTime, объявленные следующим образом: 

    TTime today; 
    TTime tomorrow; 
    TTime yesterday; 

    Этим объектам можно присвоить значения, и затем отобразить с помощью таких операторов: 

    today.Display();		// Отображение значения объекта класса today 
    tomorrow.Display();	// Отображение значения объекта класса tomorrow 
    yesterday.DisplayO;	// Отображение значения объекта класса yesterday 

    ЗАМЕЧАНИЕ 

    C++ позволяет структурам и объединениям иметь функции-члены , подобно 
классам. Действительно, если вы замените class на struct и удалите 
спецификатор доступа public, программа будет работать, как и раньше. (Члены 
структуры или объединения по умолчанию открыты для доступа). Конечно, на 
практике функции-члены: очень редко используются в структурах и объединениях и 
обычно объявляются в классах. 

    В CLASS1.CPP ничего не предпринимается для предупреждения проблемы 
изменения представления данных, упоминаемой ранее. Все данные-члены в классе 
TTime открыты для доступа и, следовательно, доступны для непосредственного 
использования в операторах, подобных тем, что приведены в строках 18-22. Измене-


    308 (195)   Часть III. Программирование на ANSI C++ 
