логическое-выражение-ИЛИ
логическое-выражение-ИЛИ ? выражение : выражение-условия
логическое-выражение-ИЛИ:
логическое-выражение-И
логическое-выражение-ИЛИ || логическое-выражение-И
логическое-выражение-И:
выражение-ИЛИ
логическое-выражение-И && выражение-ИЛИ
выражение-ИЛИ:
выражение-исключающего-ИЛИ
выражение-ИЛИ | выражение-исключающего-ИЛИ
выражение-исключающего-ИЛИ:
выражение-И
выражение-исключающего-ИЛИ ^ выражение-И
выражение-И:
выражение-равенства
выражение-И & выражение-равенства
выражение-равенства:
выражение-отношения
выражение-равенства == выражение-отношения
выражение-равенства != выражение-отношения
выражение-отношения:
сдвиговое-выражение
выражение-отношения ‹ сдвиговое-выражение
выражение-отношения › сдвиговое-выражение
выражение-отношения ‹= сдвиговое-выражение
выражение-отношения ›= сдвиговое-выражение
сдвиговое-выражение:
аддитивное-выражение
сдвиговое-выражение ‹‹ аддитивное выражение
сдвиговое-выражение ›› аддитивное выражение
аддитивное-выражение:
мультипликативное-выражение
аддитивное выражение + мультипликативное-выражение
аддитивное-выражение - мультипликативное-выражение
мультипликативное-выражение:
выражение-pm
мультипликативное-выражение * выражение-pm
мультипликативное-выражение / выражение-pm
мультипликативное-выражение % выражение-pm
выражение-pm:
выражение-приведения
выражение-pm .* выражение-приведения
выражение-pm -›* выражение-приведения
выражение-приведения:
унарное-выражение
( имя-типа ) выражение-приведения
унарное-выражение:
постфиксное-выражение
++ унарное выражение
-- унарное выражение
унарная-операция выражение-приведения
sizeof унарная-операция
sizeof ( имя-типа )
выражение-размещения
выражение-освобождения
унарная-операция: один из
* & + - ! ~
выражение-размещения:
:: opt new параметры-new opt имя-типа-new инициализатор-new
:: opt new параметры-new opt ( имя-типа ) инициализатор-new
параметры-new:
( список-выражений )
имя-типа-new:
список-спецификаций-типа описатель-new opt
описатель-new:
* список-спецификаций-cv opt описатель-new opt
имя-класса :: список-спецификаций-cv opt описатель-new opt
описатель-new opt [ выражение ]
инициализатор-new:
( список-инициализаторов opt )
выражение-освобождения:
:: opt delete выражение-приведения
:: opt delete [ ] выражение-приведения
постфиксное-выражение:
первичное-выражение
постфиксное-выражение [ выражение ]
постфиксное-выражение ( список-выражений opt )
имя-простого-типа ( список-выражений opt )
постфиксное-выражение . имя
постфиксное-выражение -› имя
постфиксное-выражение ++
постфиксное-выражение --
список-выражений:
выражение-присваивания
список-выражений , выражение-присваивания
первичное-выражение:
литерал
this
:: идентификатор
:: имя-функции-операции
:: уточненное-имя
( выражение )
имя
имя:
идентификатор
имя-функции-операции
имя-функции-преобразования
~имя-класса
уточненное-имя
уточненное-имя:
уточняющее-имя-класса :: имя
литерал:
целая константа
символьная константа
константа с плавающей точкой
строка литералов
R.17.3 Описания
описания:
спецификации-описания opt список-описателей opt;
описание-asm
определение-функции
спецификация-связи
спецификация-описания:
спецификация-класса-памяти
спецификация-типа
спецификация-fct
спецификация-шаблона-типа
friend
typedef
спецификации-описания:
спецификации-описания opt спецификация-описания
спецификация-класса-памяти:
auto
register
static
extern
спецификация-fct:
inline
virtual
спецификация-типа:
имя-простого-типа
спецификация-класса
спецификация-перечисления
спецификация-сложного-типа
:: имя-класса
const
volatile
имя-простого-типа:
полное-имя-класса
уточненное-имя-типа
char
short
int
long
signed
unsigned
float
double
void
спецификация-сложного-типа:
служебное-слово-класса имя-класса
служебное-слово-класса идентификатор
служебное-слово-класса:
class
struct
union
уточненное-имя-типа:
имя-typedef
имя-класса :: уточненное-имя-типа
полное-имя-класса:
уточненное-имя-класса
:: уточненное-имя-класса
уточненное-имя-класса:
имя-класса
имя-класса :: уточненное-имя-класса
имя-перечисления:
идентификатор
спецификация-перечисления:
enum идентификатор
Оглавление
-
R.1 Введение
-
R.1.1 Обзор
-
R.1.2 Запись синтаксиса
-
R.2 Соглашения о лексических понятиях
-
R.2.1 Лексемы
-
R.2.2 Комментарии
-
R.2.3 Идентификаторы
-
R.2.4 Служебные слова
-
R.2.5 Литералы
-
R.2.5.1 Целые константы
-
R.2.5.2 Символьные константы
-
R.2.5.3 Константы с плавающей точкой
-
R.2.5.4 Строки литералов
-
R.3 Основные понятия
-
R.3.1 Описания и определения
-
R.3.2 Область видимости
-
R.3.3 Программа и связывание
-
R.3.4 Начало и окончание программы
-
R.3.5 Классы памяти
-
R.3.6 Типы
-
R.3.6.1 Основные т ипы
-
R.3.6.2 Производные типы
-
R.3.6.3 Имена типов
-
R.3.7 Адреса
-
R.4 Стандартные преобразования
-
R.4.1 Стандартные преобразования для целочисленных
-
R.4.2 Преобразования целочисленных
-
R.4.3 Значения с плавающей точкой и двойной точностью
-
R.4.4 Целочисленные и числа с плавающей точкой
-
R.4.5 Арифметические преобразования
-
R.4.6 Преобразования указателей
-
R.4.7 Преобразования ссылок
-
R.4.8 Указатели на члены
-
R.5 Выражения
-
R.5.1 Первичные выражения
-
R.5.2 Постфиксные выражения
-
R.5.2.1 Индексация
-
R.5.2.2 Вызов функции
-
R.5.2.3 Явные преобразования типа
-
R.5.2.4 Доступ к члену класса
-
R.5.2.5 Инкремент и декремент
-
R.5.3 Унарные операции
-
R.5.3.1 Инкремент и декремент
-
R.5.3.2 Операция sizeof
-
R.5.3.3 Операция new
-
R.5.3.4 Операция delete
-
R.5.4 Явное преобразование типа
-
R.5.5 Операции указатель-на-член
-
R.5.6 Мультипликативные операции
-
R.5.7 Аддитивные операции
-
R.5.8 Операции сдвига
-
R.5.9 Операции отношения
-
R.5.10 Операции сравнения на равенство
-
R.5.11 Поразрядная операция И
-
R.5.12 Поразрядная (исключающая) операция ИЛИ
-
R.5.13 Поразрядная (включающая) операция ИЛИ
-
R.5.14 Логическая операция И
-
R.5.15 Логическая операция ИЛИ
-
R.5.16 Операция условия
-
R.5.17 Операции присваивания
-
R.5.18 Операция запятая
-
R.5.19 Выражения-константы
-
R.6 Операторы
-
R.6.1 Помеченный оператор
-
R.6.2 Оператор-выражение
-
R.6.3 Составной оператор или блок
-
R.6.4 Выбирающий оператор
-
R.6.4.1 Оператор if
-
R.6.4.2 Оператор переключателя
-
R.6.5 Операторы цикла
-
R.6.5.1 Оператор while
-
R.6.5.2 Оператор do
-
R.6.5.3 Оператор for
-
R.6.6 Операторы перехода
-
R.6.6.1 Оператор break
-
R.6.6.2 Оператор continue
-
R.6.6.3 Оператор return
-
R.6.6.4 Оператор goto
-
R.6.7 Оператор описания
-
R.6.8 Разрешение неоднозначности
-
R.7 Описания
-
R.7.1 Спецификации
-
R.7.1.1 Спецификации класса памяти
-
R.7.1.2 Спецификации функций
-
R.7.1.3 Спецификация typedef
-
R.7.1.4 Спецификация шаблона типа
-
R.7.1.5 Спецификация friend
-
R.7.1.6 Спецификация типа
-
R.7.2 Описание перечисления
-
R.7.3 Описания asm
-
R.7.4 Спецификации связи
-
R.8 Описатели
-
R.8.1 Имена типов
-
R.8.1.1 Устранение неоднозначности
-
R.8.2 Смысл описателей
-
R.8.2.1 Указатели
-
R.8.2.2 Ссылки
-
R.8.2.3 Указатели на члены
-
R.8.2.4 Массивы
-
R.8.2.5 Функции
-
R.8.3 Определения функций
-
R.8.4 Инициализаторы
-
R.8.4.1 Агрегат
-
R.8.4.2 Символьные массивы
-
R.8.4.3 Ссылки
-
R.9 классы
-
R.9.1 Имена класса
-
R.9.2 Члены класса
-
R.9.3 Функции-члены
-
R.9.3.1 Указатель this
-
R.9.3.2 Функции-члены со спецификацией inline
-
R.9.4 Статические члены
-
R.9.5 Объединения
-
R.9.6 Битовые поля
-
R.9.7 Вложенные описания классов
-
R.9.8 Описания локальных классов
-
R.9.9 Имена локальных типов
-
R.10 Производные классы
-
R.10.1 Множественные базовые классы
-
R.10.1.1 Неоднозначности
-
R.10.2 Виртуальные функции
-
R.10.3 Абстрактные классы
-
R.10.4 Сводка правил области видимости
-
R.11 Контроль доступа к членам
-
R.11.1 Спецификации доступа
-
R.11.2 Спецификации доступа для базовых классов
-
R.11.3 Описания доступа
-
R.11.4 Друзья
-
R.11.5 Доступ к защищенным членам
-
R.11.6 Доступ к виртуальным функциям
-
R.11.7 Множественный доступ
-
R.12 Специальные функции-члены
-
R.12.1 Конструкторы
-
R.12.2 Временные объекты
-
R.12.3 Преобразования
-
R.12.3.1 Преобразование с помощью конструктора
-
R.12.3.2 Функции преобразования
-
R.12.4 Деструкторы
-
R.12.5 Свободная память
-
R.12.6 Инициализация
-
R.12.6.1 Явная инициализация
-
R.12.6.2 Инициализация членов и базовых классов
-
R.12.7 Конструкторы и деструкторы
-
R.12.8 Копирование объектов класса
-
R.13 Перегрузка
-
R.13.1 Сопоставление описаний
-
R.13.2 Сопоставление параметров
-
R.13.3 Адрес перегруженной функции
-
R.13.4 Перегруженные операции
-
R.13.4.1 Унарные операции
-
R.13.4.2 Бинарные операции
-
R.13.4.3 Присваивания
-
R.13.4.4 Вызов функции
-
R.13.4.5 Индексация
-
R.13.4.6 Доступ к члену класса
-
R.13.4.7 Инкремент и декремент
-
R.14 ШАБЛОНЫ ТИПА
-
R.14.1 Шаблоны типа
-
R.14.2 Шаблоны типов для классов
-
R.14.3 Эквивалентность типов
-
R.14.4 Шаблоны типа для функций
-
R.14.5 Описания и определения
-
R.14.6 Функции-члены шаблонов типа
-
R.14.7 Друзья
-
R.14.8 Статические члены и переменные
-
R.15 Обработка особых ситуаций
-
R.15.1 Обработка особых ситуаций
-
R.15.2 Запуск особой ситуации
-
R.15.3 Конструкторы и деструкторы
-
R.15.4 Обработка особой ситуации
-
R.15.5 Спецификации особых ситуаций
-
R.15.6 Специальные функции
-
R.15.6.1 Функция terminate()
-
R.15.6.2 Функция unexpected()
-
R.15.7 Особые ситуации и правила доступа
-
R.16 Препроцессорная обработка
-
R.16.1 Фазы препроцессорной обработки
-
R.16.2 Триграфные последовательности
-
R.16.3 Макроопределение и макроподстановка
-
R.16.3.1 Операция #
-
R.16.3.2 Операция ##
-
R.16.3.3 Повторный просмотр и дальнейшие подстановки
-
R.16.3.4 Область видимости макроимен и конструкция #undef
-
R.16.4 Включение файлов
-
R.16.5 Условная трансляция
-
R.16.6 Управление строками
-
R.16.7 Команда error
-
R.16.8 Команда pragma
-
R.16.9 Пустая директива
-
R.16.10 Предопределенные макроимена
-
R.17 Приложение A: Сводка грамматики
-
R.17.1 Служебные слова
-
R.17.2 Выражения
-
R.17.3 Описания
-
R.17.4 Описатели
-
R.17.5 Описания класса
-
R.17.6 Операторы
-
R.17.7 Препроцессор
-
R.17.8 Шаблоны типа
-
R.17.9 Обработка особых ситуаций
-
R.18 Приложение B: Совместимость
-
R.18.1 Расширения
-
R.18.1.1 Возможности С++, введенные в 1985 г.
-
R.18.1.2 Возможности, добавленные в C++ после 1985 г.
-
R.18.2 C++ и ANSI C
-
R.18.2.1 Как бороться с расхождениями
-
R.18.3 Анахронизм
-
R.18.3.1 Определения функций старого стиля
-
R.18.3.2 Старый стиль задания инициализатора базового класса
-
R.18.3.3 Присваивание указателю this
-
R.18.3.4 Приведение указателей на функцию-член
-
R.18.3.5 Невложенность классов
-
Список служебных слов
-
* ПРИМЕРЫ *
-
b1_1_1.cxx
-
b1_1_3.cxx
-
b1_4_5v.cxx
-
b1_5.cxx
-
b1__13.cxx
-
b1__14.cxx
-
b1__16.cxx
-
b2_1_3.cxx
-
b2_3.cxx
-
b2_3_6a.cxx
-
b2_3_6b.cxx
-
b2_3_7.cxx
-
b2_3__10.cxx
-
b3_1all.cxx
-
b3_2_6a.cxx
-
b3_2_6b.cxx
-
b4_6_8.cxx
-
b4_6_9.cxx
-
b5_3_2.cxx
-
b5_4_5.cxx
-
b5_5_3.cxx
-
b6_3_2.cxx
-
b6_6.cxx
-
b6_7.cxx
-
b6_8.cxx
-
b6_9.cxx
-
b7_2_8.cxx
-
b7_7.cxx
-
b8_3_3.cxx
-
Примечания