    Поскольку использование встраиваемых функций-членов не отличается от 
использования обычных функций-членов, основная программа осталась без 
изменений. Листинг 13.11 идентичен APPOINT2.CPP за исключением того, что в 
строке 3 теперь включается заголовочный файл TIME3.H вместо TIME2.H. 
Скомпилируйте программу полностью, введя в DOS команду bcc appoint3 time3. Из 
интегрированной среды вы можете создать и скомпилировать проект, состоящий из 
файлов APPOINT3.CPP и TIME3.CPP. 

    Листинг 13.11.  APPOINT3.CPP (отображение примера календаря встреч) 

    1:	#include <iostream.h> 
    2:	#include <stdio.h> 
    3:	#include "time3.h" 
    4:	 
    5:	main() 
    6:	{ 
    7:	TTime appointment; 
    8:	 
    9:	appointment,SetTime(7, 21, 1996, 8, 30); 
    10:	for (int slots = 1; slots <= 17; slots++ ) { 
    11:	appointment. Display() ; 
    12:	appointment.ChangeTime(30) ; 
    13:	
    14	return 0; 
    15:	}
      __________________________________________________ 


    В строке 14 в Т1МЕЗ.Н (листинг 13.9) приводится объявление типичной 
встраиваемой функции-члена. Для ссылки приведем сокращенную версию объявления 
класса TTime: 

    class TTime { private: 
    long dt; public: 
    void Display(void)  { cout « ctime(&dt);   } 
    } 

    Тело функции-члена DisplayO заключено в фигурные скобки сразу после 
заголовка функции в объявлении класса. Обратите внимание на положение точки с 
запятой, завершающей оператор вывода в поток cout. . Такой формат логичен для 
правил С и C++, которые гласят, что точка с запятой завершает объявления и 
операторы. Вы можете найти, что этот формат удобнее читать, если написать 
встраиваемую функцию-член, используя стиль с отступами: 

  class TTime { 
   private: 
     long dt; 
   public: 
     void Display(void) 
     { 
       cout « ctirae(idt); 
     } 
  }; 

    Оба формата работают одинаково хорошо, но для экономии пространства 
большинство встраиваемых функций написаны в одну-две строки, как было показано 
раньше. Операторы, в которых происходит вызов функции Display(), не генерируют 
вызов функции в скомпилированном коде. Например, вы объявили объект класса и 
установили в нем дату и время: 

    TTime today; 
    today.SetTime(4,   19,   1998,   6,  0); 

    Затем вы можете вызвать функцию-член Display() для объекта today:

    today. Display();	

    Несмотря на внешний вид, программа с компилируется так, как если бы вы написали 

    cout « ctime(&today.dt); 

    Конечно, вы не можете в действительности написать такой оператор, 
поскольку dt — закрытый член класса TTime и, следовательно, недоступен вне класса. 

    ЗАМЕЧАНИЕ 

    Как и в случае с обычными встраиваемыми функциями, C++ может и не вставить 
функцию-член непосредственно в скомпилированный код. Например, если 
встраиваемая функция-член слишком сложна, компилятор может решить 
скомпилировать ее как обычную функцию член. 
    
    318	Часть III. Программирование на ANSI C++ 