 вым-членам объекта класса присваиваются значения любого числа аргументов — 
от нуля и более, не затрагивая при этом текущих значений по умолчанию для тех 
параметров, которые не указаны. Если -today - объект, класса ТТуре, оператор

   today, SetTimeO,  15,  1998,  -1,  -1);          

устанавливает дату, хранящуюся в today, равной 15 января 1998 
года, но с текущим временем, поскольку эти два аргумента установлены равными -1. 
    Поскольку функция перегружена, теперь нет нужды вводить два отрицательных 
аргумента, занимающих лишнее место. Вы можете просто написать 

    today.SetTime(1, 15, 1998);

    В этом случае вызывается перегруженная функция-член с тремя целочисленными 
параметрами (строки 43-46), жоторая снабжает недостающие аргументы 
отрицательными значениями. Компилятор знает, какая из перегруженных 
функций-членов SetTimeO вызывается, основываясь на числе и типе аргументов, 
использованных в операторе. Прочие перегруженные функции-члены реализованы 
подобным же образом в терминах полностью оснащенной SetTime() с пятью 
параметрами. Например, оператор 

    today.SetTime() ;	

вызывает перегруженную функцию-член SetTime(), реализованную в строках 
58-61 и не имеющую аргументов, которая, в свою очередь, вызывает версию с 
пятью аргументами для установки в today системной даты и времени. 
    В листинге 13.14 демонстрируется использование перегруженных 
функций-членов TTime. Скомпилируйте программу и модуль поддержки TIME4.H из 
DOS, введя команду bcc overmf time4. Запустите получившийся в результате 
выполняемый файл OVERMF.EXE, введя его имя. Или же из интегрированной оболочки 
с помощью меню Project откройте файл проекта OVERMF. IDE и затем нажмите 
<Ctrl+F9> для компиляции и запуска.

    Листинг 13.14.  OVERMF.CPP (использование перегруженных функций-членов)

    1:	#include	<iostream.h> 
    2:	#include	<stdio.h> 
    3:	#include	"time4.h"
    4:	
    5:	main()
    6.      {
    7:           TTime appointment;
    9:	appointment.SetTime();
    10:	appointment.Display();            
    11:	appointmentSetTime(8); 
    12:	appointment.Display(); 
    13:	appointment.SetTime(8, 1);
    14:	appointment.Display ( );            
    15:	appointment.SetTime(8, 1, 1996);     
    16:	appointment.Display(); 
    17:	appointment.SetTime(8, 1, 1996, 8); 
    18:	appointment.Display(); 
    19:	appointment.SetTime(8, 1, 1996, 8, 30); 
    20:	appointment.Display(); 
    21:	return 0; 
    22:      } 

    В строках 9-20 вызывается каждая перегруженная функция-член SetTime(), с 
передачей от нуля до пяти аргументов, а также вызывается Display(). При запуске 
программы чередующиеся вызовы Display() отобразят результат каждого обращения к SetTime(). 

    Параметры функций-членов по умолчанию 

    Многочисленные перегруженные функции-члены, подобные приведенным в строках 
16-21 листинга 13.12, полезны, но зачастую приводят к путанице в коде. В 
некоторых случаях параметры функций-членов по умолчанию помогают сократить 
количество функций-членов, необходимых для поддержки вызовов с различным 
числом аргументов. 
    В главе 12 объяснялось использование параметров по умолчанию для обычных 
функций. Параметры функций-членов по умолчанию в точности такие же, как и те, 
которые вы уже изучили, только они используются в объявлении классов. В 
листинге 13.15, приводится новая версия функции SetTime() класса TTime, 
использующая параметры по умолчанию. Как и другие заголовочные файлы, TIME5.H 
содержит только объявления, и его нельзя компилировать. Но вы можете 
скомпилировать другие модули, включающие в себя этот заголовочный файл, для 
того, чтобы использовать класс TTime. 

    Глава 13. Программирование классов	321 
    
    11  Освоение Borland® C++4.5 