Глава 4. Препроцессор______________________________________101
Программисты на языке С могут считать пока, что класс — это просто усовершенствованная структура struct (программисты не на С могут это утверждение проигнорировать). Допустим, что имеется класс FOO, определенный следующим образом:
class FOO {
void FOOBARO {}; // пустая встраиваемая функция }
Поскольку следом за именем FOOBAR несомненно стоит тело функции (} (не будем обращать внимание на то, что оно пустое), значит, эту функцию следует рассматривать как* встраиваемую. Так что, встречая в объявлении класса {} (левую и правую фигурные скобки), знайте, что эта функция неявным образом объявлена как встраиваемая.
В Annotated Reference Manual от Страуструпа (Stroustrop) и Эллиса (Ellis) утверждается, что употребление ключевого слова inline в этом контексте избыточно. Может быть оно и избыточно, но не ошибочно и несколько проясняет намерения программировавшего, поэтому его применение в данном случае можно счесть оправданным.
Далее...
Эта глава охватывает некоторые исторически важные роли препроцессора, которые он исполнял по мере развития C++ как языка. Также был продемонстрирован ряд проверенных временем технических приемов, таких как утверждения (assert) и прочие методы отладки. По мере представления различных граней деятельности препроцессора в прошлом и в настоящем были разъяснены отдельные нетривиальные темы.
Другие примеры рассмотренных возможностей вы найдете дальше на страницах этой книги:
• Глава 5 "Соглашения об именах и комментариях" объясняет материал, относящийся к стилям комментирования и присвоения имен.
• В главе 9 "Описатели и спецификаторы данных" рассматривается использование описателя const и других.
• В главе 10 "Написание выражений" обсуждаются общие правила построения выражений — основных строительных блоков любых программ.
• Глава 14 "Базовые концепции классов" посвящена изложению основных концепций классов.
• В главе 19 "Классы-шаблоны" подробно рассказывается о шаблонах и их возможностях.