Структура книги
Книга состоит из трех частей. Лекции с 1 по 10 являются учебником по языку. В лекциях с 11 по 13 обсуждаются вопросы проектирования и развития программного обеспечения с учетом возможностей С++. В конце книги приведено полное справочное руководство по языку. Исчерпывающее описание конструкций С++ содержится только там. Учебная часть книги содержит примеры, советы, предостережения и упражнения, для которых не нашлось места в руководстве.
Книга в основном посвящена вопросу, как с помощью языка C++ структурировать программу, а не вопросу, как записать на нем алгоритм. Следовательно, там, где можно было выбирать, предпочтение отдавалось не профессиональным, но сложным для понимания, а тривиальным алгоритмам. Так в одном из примеров используется пузырьковая сортировка, хотя алгоритм быстрой сортировки больше подходит для настоящей программы. Часто написать ту же программу, но с более эффективным алгоритмом, предлагается в виде упражнения.
Лекция 1 содержит краткий обзор основных концепций и конструкций С++. Она позволяет познакомиться с языком в общих чертах. Подробные объяснения конструкций языка и способов их применения содержатся в последующих главах. Обсуждаются в первую очередь средства, обеспечивающие абстракцию данных и объектно-ориентированное программирование. Основные средства процедурного программирования упоминаются кратко.
В лекциях 2, 3 и 4 описываются средства С++, которые не используются для определения новых типов: основные типы, выражения и структуры управления. Другими словами, эти главы содержат описание той части языка, которая по сути представляет С. Изложение в указанных лекциях идет в углубленном виде.
Лекции 5 - 8 посвящены средствам построения новых типов, которые не имеют аналогов в С. В лекции 5 вводится основное понятие - класс. В ней показано, как можно определять пользовательские типы (классы), инициализировать их, обращаться к ним, и, наконец, как уничтожать их. Лекция 6 посвящена понятию производных классов, которое позволяет строить из простых классов более сложные. Оно дает также возможность эффективной и безопасной (в смысле типа) работы в тех ситуациях, когда типы объектов на стадии трансляции неизвестны. В лекции 7 объясняется, как можно определить унарные и бинарные операции для пользовательских типов, как задавать преобразования таких типов, и каким образом можно создавать, копировать и удалять объекты, представляющие пользовательские типы. Лекции 8 посвящена шаблонам типа, т.е. такому средству С++, которое позволяет определить семейство типов и функций.
В лекции 9 обсуждается обработка особых ситуаций, рассматриваются возможные реакции на ошибки и методы построения устойчивых к ошибкам систем. В лекции 10 определяются классы ostream и istream, предоставляемые стандартной библиотекой для потокового ввода-вывода.
Лекции 11 - 13 посвящены вопросам, связанным с применением С++ для проектирования и реализации больших программных систем. В лекции 11 в основном рассматриваются вопросы проектирования и управления программными проектами. В лекции 12 обсуждается взаимосвязь между языком С++ и проблемами проектирования. В лекции 13 показаны способы создания библиотек.
Завершается книга справочным руководством по С++.
Ссылки на различные части книги даются в виде $2.3.4, что означает раздел 3.4 лекции 2. Для обозначения справочного руководства применяется буква R, например, $.8.5.5.