Глава 4. Препроцессор______________________________________101

Программисты на языке С могут считать пока, что класс — это просто усовершенствованная структура struct (программисты не на С могут это утверждение проигнорировать). Допустим, что имеется класс FOO, определенный следующим образом:

class FOO {

void FOOBARO {}; // пустая встраиваемая функция }

Поскольку следом за именем FOOBAR несомненно стоит тело функции (} (не будем обращать внимание на то, что оно пустое), значит, эту функцию следует рассматривать как* встраиваемую. Так что, встречая в объявлении класса {} (левую и правую фигурные скобки), знайте, что эта функция неявным образом объявлена как встраиваемая.

В Annotated Reference Manual от Страуструпа (Stroustrop) и Эллиса (Ellis) утверждается, что употребление ключевого слова inline в этом контексте избыточно. Может быть оно и избыточно, но не ошибочно и несколько проясняет намерения программировавшего, поэтому его применение в данном случае можно счесть оправданным.

Далее...

Эта глава охватывает некоторые исторически важные роли препроцессора, которые он исполнял по мере развития C++ как языка. Также был продемонстрирован ряд проверенных временем технических приемов, таких как утверждения (assert) и прочие методы отладки. По мере представления различных граней деятельности препроцессора в прошлом и в настоящем были разъяснены отдельные нетривиальные темы.

Другие примеры рассмотренных возможностей вы найдете дальше на страницах этой книги:

• Глава 5 "Соглашения об именах и комментариях" объясняет материал, относящийся к стилям комментирования и присвоения имен.

• В главе 9 "Описатели и спецификаторы данных" рассматривается использование описателя const и других.

• В главе 10 "Написание выражений" обсуждаются общие правила построения выражений — основных строительных блоков любых программ.

• Глава 14 "Базовые концепции классов" посвящена изложению основных концепций классов.

• В главе 19 "Классы-шаблоны" подробно рассказывается о шаблонах и их возможностях.