Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочное руководство по C++.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.03 Mб
Скачать

Бьeрн Страустрап. Справочное руководство по C++

---------------------------------------------------------------

Второе дополненное издание

---------------------------------------------------------------

* Справочное руководство r.1 Введение

Это справочное руководство описывает язык программирования С++ по

состоянии на май 1991. С++ - язык программирования общего назначения,

базирующийся на языке программирования С Ь.

Ь "The C Programming Language" B. Kernighan, D. Ritchie. Prentice

Hall, 1978, 1988.

Есть русский перевод: "Язык программирования С. Задачи по языку С"

Б. Керниган, Д. Ритчи, А. Фьюер. "Финансы и статистика". 1984

В дополнение к возможностям С язык С++ предоставляет классы, функции

подстановки, перегрузку операций, перегрузку имен функций, постоянные

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

параметров функций и приведение типов. Все расширения С суммируются

в $$R.18.1. Различия между С++ и ANSI C++ приведены в $$R.18.2 Ь.

Ь American National Standard X3.159-1989. Американский национальный

стандарт.

Расширения С++ версии 1985 года до данного описания суммируются в

$$R.18.1.2. Разделы, относящиеся к шаблонам типа ($$R.14) и

управлению особыми ситуациями ($$R.15), являются местами планируемых

расширений языка.

R.1.1 Обзор

Это руководство содержит следующее:

1. Введение.

2. Соглашения о лексических понятиях.

3. Основные понятия.

4. Стандартные преобразования.

5. Выражения.

6. Операторы.

7. Описания.

8. Описатели.

9. Классы.

10. Производные классы.

11. Контроль доступа к членам.

12. Специальные функции-члены.

13. Перегрузка.

14. Шаблоны типов.

15. Управление особыми ситуациями.

16. Препроцессорная обработка.

Приложение A: Сводка синтаксиса

Приложение B: Совместимость

R.1.2 Запись синтаксиса

В записи синтаксиса языка в этом руководстве синтаксические понятия

обозначаются курсивом, а литеральные слова и символы шрифтом постоянной

ширины. Варианты перечисляются на отдельных строках, за исключением

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

строке с пометкой "один из". Необязательный терминальный или

нетерминальный символ обозначается с помощью нижнего индекса "opt",

поэтому

{ выражение opt }

означает необязательное выражение, заключенное в фигурные скобки.

R.2 Соглашения о лексических понятиях

Программа на С++ состоит из одного или нескольких файлов ($$R.3.3).

С логической точки зрения файл транслируется за несколько проходов.

Первый проход состоит в препроцессорной обработке ($$R.16), на которой

происходит включение файлов и макроподстановка. Работа препроцессора

управляется с помощью команд, являющихся строками, первый символ

которых отличный от пробела есть # ($$R2.1). Результат работы

препроцессора есть последовательность лексем. Такую последовательность

лексем, т.е. файл после препроцессорной обработки, называют

единицей трансляции.

R.2.1 Лексемы

Существуют лексемы пяти видов: идентификаторы, служебные слова,

литералы, операции и различные разделители. Пробелы, вертикальная

и горизонтальная табуляция, конец строки, перевод строки и комментарии

(все вместе "обобщенные" пробелы), как указано ниже, игнорируются,

за исключением того, что они отделяют лексемы. Обобщенные пробелы

нужны, чтобы разделить стоящие рядом идентификаторы, служебные

слова и константы.

Если входной поток разобран на лексемы до данного символа, то

следующей лексемой считается лексема с максимально возможной длиной,

которая начинается с этого символа.

R.2.2

Комментарии

Символы /* начинают комментарий, который завершается символами */.

Такие комментарии не могут быть вложенными. Символы // начинают

комментарий, который завершается концом этой строки. Символы //,

/* и */ не имеют специального назначения в комментарии // и

рассматриваются как обычные символы. Аналогично символы // и /*

не имеют специального назначения внутри комментария /*.