Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 48 49 50 [ 51 ] 52 53 54 ... 210


Если необходимо, то выражение преобразуется, как это делается при присваивании, к типу функции, в которой оно возникло.

Обход конца функции эквивалентен возврату return без возвращаемого значения.

Оператор goto

Можно осуществлять безусловную передачу управления с помощью оператора

goto идентификатор ;

Идентификатор должен быть меткой, расположенной в текущей функции.

Помеченные операторы

Перед любым оператором может стоять префикс метка, имеющий вид

идентификатор :

который служит для описания идентификатора как метки. Метка используется только как объект для goto.

Областью видимости метки является текущая функция, исключая любой подблок, в котором был переописан такой же идентификатор.

Пустой оператор

Пустой оператор имеет вид

Пустой оператор используется для помещения метки непосредственно перед } составного оператора или того, чтобы снабдить такие операторы, как while, пустым телом.

Оператор delete

Оператор delete имеет вид

delete выражение ;

Результатом выражения должен быть указатель. Объект, на который он указывает, уничтожается. Это значит, что после оператора уничтожения delete нельзя гарантировать, что объект имеет определенное значение.



Эффект от применения delete к указателю, не полученному из операции new, не определен. Однако, уничтожение указателя с нулевым значением безопасно.

Оператор asM

Оператор asm имеет вид

asm ( строка) ;

Смысл оператора asm не определен. Обычно он используется для передачи информации через компилятор ассемблеру.

Внешние определения

Программа на C++ состоит из последовательности внешних определений. Внешнее определение описывает идентификатор как имеющий класс памяти static и определяет его тип. Спецификатор типа может также быть пустым, и в этом случае принимается тип int.

Область видимости внешних определений простирается до конца файла, в котором они описаны, так же, как действие описаний сохраняется до конца блока. Синтаксис внешних определений тот же, что и у описаний, за исключением того, что только на этом уровне и внутри описаний классов может быть задан код (текст программы) функции.

Определения функций

Определения функций имеют вид:

определение функции:

спецификаторы описания описатель функции opt

инициализатор базового класса

opt тело функции

Единственными спецификаторами класса памяти (sc-спецификаторами), допустимыми среди спецификаторов описания, являются extern, static, overload, inline и virtual.

Описатель функции похож на описатель функции, возвращающей ... , за исключением того, что он включает в себя имена формальных параметров определяемой функции.



Описатель функции имеет вид:

описатель функции:

описатель ( список описаний параметров )

Единственный класс памяти, который может быть задан, это тот, при котором соответствующий фактический параметр будет скопирован, если это возможно, в регистр при входе в функцию. Если в качестве инициализатора для параметра задано константное выражение, то это значение используется как значение параметра по умолчанию.

Тело функции имеет вид

тело функции: составной оператор

Вот простой пример полного определения функции:

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); ... };



1 ... 48 49 50 [ 51 ] 52 53 54 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика