    Наконец,  функции могут возвращать ссылки на объекты класса.  Вы можете 
использовать ссылочные функции для ссылки на существующие объекты, такие как 
глобальный объект TTime today: 

   TTime &newTimeR(void) 
   {
      return today; 
   }

    Где-нибудь в другом месте вы можете объявить ссылку на TTime и присвоить 
ей результат newTimeR():

   TTime &tr = newTimeRO;

   Теперь ссылка tr — псевдоним для today и может использоваться в операторе вида: 

     newTimeP().Display(); 

    Этот трюк особенно полезен в случае, если функция, подобная newTimeR(), выполняет 
операцию поиска с возможным возвратом ссылки на один из нескольких объектов класса 
TTime, исходя из неких указанных критериев. 

    Массивы объектов класса 

    Так же, как вы можете объявлять массивы обычных типов данных, вы можете 
объявлять и массивы объектов класса. Например, следующее объявление создаст 
массив из 10 элементов объектов TTime: 

    TTime tenTimes[10]; 

    Существует только одно строгое правило, которое необходимо помнить: 
объекты класса, которые будет содержать массив, должны иметь конструкторы по 
умолчанию. Когда создается массив объектов класса, подобный tenTimes, C++ 
вызывает конструктор класса по умолчанию для каждого объекта массива. В случае 
с tenTimes, C++ вызывает 10 раз конструктор по умолчанию TTime, инициализируя 
таким образом объекты tenTimes[0] — tenTimes[9] текущими датой и временем. 
    Листинг 13.22 демонстрирует использование простых массивов объектов 
класса. В программе используется класс TTime, определенный ранее в TIME6.H. 
Скомпилируйте программу из приглашения DOS командой bcc obarray1 time6 и 
запустите получившийся в результате исполняемый файл OBARRAY1.EXE путем ввода 
его имени. Или же из интегрированной оболочки с помощью меню Project откройте 
проект OBARRAY1.IDE и нажмите <Ctrl+F9> для компиляции и запуска. 

    Листинг 13.22.  OBARRAY1.CPP (массивы и конструктор по умолчанию)

    1:	#include <iostream.h> 
    2:	#include <stdiovh> 
    3:	#include "times. h"
    4: 
    5:           main()
    6:	{
    7:	  TTime tarray[6] ;
    8:
    9:	for (int i=0;   i < 6; i++ )
    10:	  tarray[i].Display(): 
    11:	return 0; 
    12:	} 

    В строке 7 объявляется массив tarray из шести объектов TTime. Если вы 
запустите OBARRAY1, вы увидите шесть одинаковых дат и времен, значит C++ 
вызывал конструктор класса для инициализации каждого элемента массива. 
(Запустите программу на выполнение из Turbo Debugger и нажимайте <F7> для 
трассировки операторов и проверки того факта, что конструктор TTime будет 
вызван шесть раз.) 
    Если вы хотите, чтобы C++ вызывал различные конструкторы, вы должны явным 
образом инициализировать каждый элемент массива. Вы можете сделать это 
непосредственно в объявлении массива, как это показано в листинге 13.23. 
Скомпилируйте программу, как вы это уже делали с OBARRAY1. 

    Листинг 13.23.  OBARRAY2.CPP (объявление массивов и альтернативных конструкторов) 

    1:	#include <iostream.h> 
    2.	#include <stdio.h> 
    3:	#include "timee.n" 
    4: 
    5:	main()                                                                
    6:	{                                         .                       
    7:	TTime tarray[6] = {   TTime(), TTime(8), 


    332     Часть III. Программирование на ANSI C++ 
