Читать «Справочное руководство по C++» онлайн - страница 99
Бьярн Страустрап
части-elif:
строка-elif текст
части-elif строка-elif текст
строка-elif:
# elif выражение-константа
часть-else:
строка-else текст
строка-else:
# else
строка-endif:
# endif
R.17.8 Шаблоны типа
описание-шаблона-типа:
template ‹ список-параметров-шаблона-типа › описание
список-параметров-шаблона-типа:
параметр-шаблона-типа
список-параметров-шаблона-типа , параметр-шаблона-типа
параметр-шаблона-типа:
параметр-типа
описание-параметра
параметр-типа:
class идентификатор
имя-шаблонного-класса:
имя-шаблона-типа ‹ список-парам-шаблона-типа ›
список-парам-шаблона-типа:
парам-шаблона-типа
список-парам-шаблона-типа , парам-шаблона-типа
парам-шаблона:
выражение
имя-типа
R.17.9 Обработка особых ситуаций
проверяемый-блок:
try составной-оператор список-обработчиков
список-обработчиков:
обработчик список-обработчиков opt
обработчик:
catch ( описание-особой-ситуации ) составной-оператор
описание-особой-ситуации:
список-спецификаций-типа описатель
список-спецификаций-типа абстрактный-описатель
список-спецификаций-типа
…
выражение-запуска:
throw выражение opt
спецификация-особой-ситуации:
throw ( список-типа opt )
список-типа:
имя-типа
список-типа , имя-типа
R.18 Приложение B: Совместимость
Это приложение не относится к справочному руководству C++ и не является определением конструкций языка.
Язык C++ основывается на С (описание в книге Кернигана и Ритчи, 78 г., дальше K&R) и включает большинство изменений, предложенных в ANSI стандарте для С. При конвертировании программ на языках С++, K&R C и ANSI C могут возникнуть трудности в связи с различным вычислением в них выражений. Транслятор должен распознавать все различия между C++ и ANSI C. Программы на C++ и ANSI C должны иметь одинаковый смысл за исключением трех следующих случаев:
• В языке С выражение sizeof('a') равно sizeof(int), а в C++ оно равно sizeof(char).
• Если есть описание
enum e { A };
то sizeof(A) равно в С sizeof(int), тогда как в C++ оно равно sizeof(e) и не обязано быть равно sizeof(int).
• Имя структуры, описанной во внутреннем блоке, может скрывать имя объекта, функции, элемента перечисления или типа из внешнего блока.
Приведем пример:
int x[99];
void f()
{
struct x { int a; };
sizeof(x); /* для C это размер массива */
/* а для C++ размер структуры */
}
R.18.1 Расширения
В этом разделе перечисляются основные расширения языка С, введенные в С++.
R.18.1.1 Возможности С++, введенные в 1985 г.
Здесь перечисляются возможности, добавленные к С, версией языка C++ 1985 г.