Глава 14. Базовые концепции классов 355

Поскольку этот класс тесно связан со структурой ffblk, то напрашивается реализация его как производного от этой структуры (см. главу 20 "Наследование и полиморфизм"). Конструктор (строки 11, 12) почти идентичен предыдущему за исключением того, что он реализован в виде встраиваемой функции.

В строках 15, 17 и 19 присутствуют некоторые новшества. Однако если не обращать внимания на непривычный синтаксис, то легко заметить, что определения этих функций совершенно идентичны функциям Сиг () и Next () из предыдущего примера.

Суть. нашей программы не изменилась, но теперь она выражена гораздо более удобными средствами. Присутствие в определениях функций ключевого слова operator означает, что имеет место перегрузка операций; в двух словах, это означает, что операциям навязывается тот смысл, который является наиболее подходящим в контексте конкретного класса.

Совет

Для того чтобы воочию увидеть и понять работу этого механизма, полезно оттрассировать подобную функцию с помощью интегрированного отладчика. (На рис. 14.4 и 14.5 показан один шаг трассировки в операции преобразования char* о класса DIRLIST).

! Предупреждение

¦Для трассировки отладчиком встраиваемых функций-членов следует установить флажки Options, Project, Compiler, Debugging, Out-of-line inline functions (как показано на рис. 14.3).

h03551.jpg

Рис. 14.3. Разрешение трассировки встраиваемых функций производится в окне диалога Project Options