    Большинство функций-членов объявляются непосредственно в классе, как это 
показано в строке 14 листинга 13.9. Вы также можете объявить встраиваемую 
функцию-член с помощью ключевого слова inline в модуле реализации класса. 
Например, для преобразования GetTime() из TTime во встраиваемую функцию, вы 
можете изменить реализацию функции в листинге 13.10 следующим образом: 

    inline void TTime::GetTime(in &m,   int &y,  int &hr,   int &mip) 
    {
      ....
    }

    Конечно, поставив inline перед именем функции, можно и не добиться 
желаемого результата, поскольку реализация встраиваемых функций-членов должна 
быть доступна компилятору до того, как эта функция будет вызвана. В 
большинстве случаев встраиваемые функции-члены лучше всего распознаются, когда 
они объявлены непосредственно в классе. 

    Перегруженные функции-члены 

    В главе 12 вы узнали, как перегружать функции, объявляя несколько функций 
с одним и тем же именем, но отличающихся, по крайней мере, одним параметром. 
Вы можете использовать аналогичный трюк и для перегрузки функций-членов класса. 
    Перегруженные функции-члены особенно полезны, когда необходимо несколько 
параметров (а не все) функции-члена. Например, в текущей реализации функции 
SetTime() класса TTime необходимо пять параметров. Для того чтобы установить 
дату и время: 15 января 1997 года, 11:45, вы должны написать 

    TTime anyTime; 
    anyTime.SetTime( 1,   15,   1997,   11,   45 ); 

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

    anyTime.SetTime( 1,   15,   1997); 

    В листинге 13.12 приводится новый класс TTime и несколько перегруженных 
функций-членов SetTime(). В заголовке TIME4.H содержатся только объявления и, 
следовательно, их нельзя скомпилировать. Следующие два листинга включают 
TIME4.H с его объявлением класса. 

    Листинг 13.12.  TIME4.H (класс TTime с перегруженными функциями-членами) 

    1:	// time4.h -- Объявление класса TTime                                   
    2:	
    3:	#ifndef  __TIME4_H 
    4:	#define __TIME4 H 1 // Предотвращение нескольких #include
    5:	 
    6:	#include <iostream. h>    
    7:	#include <time.h>       
    8:	#include <string.h>                
    9:	
    10:	class TTime {
    11:	private:                
    12:	  long dt; // Дата и время - в секундах от 1 января 1970 года          
    13:	public: 
    14:	  void Display(void) { cout « ctime(&dt); } 
    15;	  void GetTime(int im, int id, int &y, int &hr, int &min); 
    16:	  void SetTime( int m, int d, int y, int hr, int min); 
    17:	  void SetTime( int m, int d, int y, int hr); 
    18:	  void SetTime( int m, int d, int y); 
    19:	  void SetTitne( int m, int d);                   
    20:	  void SetTime( int m);            
    21:	  void SetTime(void); 
    22:	  char *GetSTime(void) 
    23:	  { 
    24:	   char *cp = strdup(ctime(&dt)); 
    25:	   return cp;                                                             
    26:	  } 
    27:	  void ChangeTime(long nminutes) { dt += (nminutes * 60); } 
    28:    }; 
    29: 
    30:  #endif // __TIME4_H
     ______________________________________________________ 

    В строках 16-21 объявляется шесть перегруженных функций-членов SetTime().
Все они имеют одинаковое имя и отличаются хотя бы одним параметром — таково 
минимальное требование, чтобы компилятор мог их 

    
    Глава 13. Программирование классов,	319 
