continue эквивалентно goto contin. (За contin: следует пустой
оператор,
Эффект от применения delete к указателю, не полученному из операции new (
), не определен.
Однако, уничтожение указателя с нулевым значением безопасно.
10. Внешние Определения
Программа на C++ состоит из последовательности внешних
определений. Внешнее определение описывает идентификатор как
имеющий класс памяти static и определяет его тип. Спецификатор типа
(#8.2) может также быть пустым, и в этом случае принимается тип int. Область видимости внешних определений простирается до конца файла, в котором они описаны, так же, как действие описаний сохраняется до конца блока. Синтаксис внешних определений тот же, что и у описаний, за исключением того, что только на этом уровне и
внутри описаний классов может быть задан код (текст программы)
функции.
10.1 Определения функций
Определения функций имеют вид
определение_функции:
спецификаторы_описания описатель_функции opt инициализатор_базового_класса opt
тело_функции
Единственными cпецификаторами класса памяти (sc-cпецификаторами),
допустимыми среди спецификаторов описания, являются extern,
static, overload, inline и virtual. Описатель функции похож на
описатель "функции, возвращающей ...", за исключением того, что он
включает в себя имена формальных параметров определяемой функции.
Описатель функции имеет вид
описатель_функции:
описатель ( список_описаний_параметров )
Форма списка описаний параметров определена в #8.4. Единственный класс памяти, который может быть задан, это тот, при котором соответствующий фактический параметр будет скопирован, если это возможно, в регистр при входе в функцию. Если в качестве инициализатора для параметра задано константное выражение, то это
значение используется как значение параметра по умолчанию.
Тело функции имеет вид
тело_функции:
составной_оператор
Вот простой пример полного определения функции:
int max (int a,int b,int c)
{
int m = (a > b) ? a : b;
return (m > c) ? m : c;
}
Здесь int является спецификатором типа ; max (int a, int b, int
c) является описателем функции ; { ... } - блок, задающий текст
программы (код) оператора.
Поскольку в контексте выражения имя (точнее, имя как формальный
параметр) считается означающим указатель на первый элемент массива,
то описания формальных параметров, описанных как "массив из ...",
корректируются так, чтобы читалось "указатель на ...".
Инициализатор базового класса имеет вид
инициализатор_базового_класса:
: ( список_параметров opt )
Он используется для задания параметров конструктора базового
класса в конструкторе производного класса. Например:
struct base { base (int); ... };
struct derived : base { derived (int); ... };
derived.derived (int a) : (a+1) { ... }
derived d (10);
Конструктор базового класса вызывается для объекта d с параметром
11.