Грамматическое определение инструкций языка C++ приведено ниже (
try
if
if
else
switch
while
do
while
for
case
default:
identifier:
break;
continue;
return
goto
catch
Обратите внимание на то, что объявление — это инструкция, а присваивание и вызов функции являются выражениями. К этому определению следует добавить следующий список.
• Итерация (for
и while
); см. раздел 4.4.2.
• Ветвление (if
, switch
, case
и break
); см. раздел 4.4.1. Инструкция break
прекращает выполнение ближайшей вложенной инструкции switch
, while
, do
или for
. Иначе говоря, следующей будет выполнена инструкция, следующая за последней в теле одной из перечисленных выше инструкций.
• Выражения; см. разделы A.5 и 4.3.
• Объявления; см. разделы A.6 и 8.2.
• Исключения (try
и catch
); см. разделы 5.6 и 19.4.
Рассмотрим пример, созданный просто для того, чтобы продемонстрировать разнообразие инструкций (какую задачу они решают?).
int* f(int p[],int n)
{
if (p==0) throw Bad_p(n);
vector
int x;
while (cin>>x) {
if (x==terminator) break; // выход из цикла while
v.push_back(x);
}
for (int i = 0; i
if (v[i]==*p)
return p;
else
++p;
}
return 0;
}
A.7. Объявления
• имя объявляемой сущности;
• тип объявляемой сущности;
• начальное значение объявляемой сущности (во многих случаях необязательное).
Мы можем объявлять следующие сущности:
• объекты встроенных типов и типов, определенных пользователем (раздел A.8);
• типы, определенные пользователем (классы и перечисления) (разделы A.10–А.11, глава 9);
• шаблоны (шаблонные классы и функции) (раздел A.13);
• альтернативные имена (раздел A.16);
• пространства имен (разделы A.15 и 8.7);
• функции (включая функции-члены и операторы) (раздел A.9, глава 8);
• перечисления (значения перечислений) (разделы A.11 и 9.5);
• макросы (разделы A.17.2 и 27.8).
A.7.1. Определения
Определение с инициализацией, резервирующее область памяти или как-то иначе поставляющую компилятору всю информацию, необходимую для использования имени в программе, называется
double f(); // объявление
double f() { /* ... */ }; // также определение
extern const int x; // объявление
int y; // также определение
int z = 10; // определение с явной инициализацией