Справочное руководство по C++

R.6.6 Операторы перехода.

Операторы перехода делают безусловную передачу управления.

Оператор-перехода:

 break ;

 continue ;

 return выражение opt ;

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

По выходе из области видимости (каким бы образом это не произошло) вызываются деструкторы (§R.12.4) для всех объектов классов, построенных в этой области, которые еще не были уничтожены. Это относится как к явно описанным объектам, так и ко временным объектам (§R.12.2).

R.6.6.1 Оператор break.

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

R.6.6.2 Оператор continue.

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

    while (foo) {      do  {           for (;;) {

    // ...             // ...          // ...

    contin: ;          contin: ;       contin: ;

    }                  } while (foo);  }.

Оператор continue, не относящийся ко внешним операторам цикла, эквивалентен оператору goto contin.

R.6.6.3 Оператор return.

Возврат из функции в обратившуюся к ней функцию происходит с помощью оператора return.

Оператор return без выражения можно использовать только в функциях, которые не возвращают значение, т.е. в функциях, возвращающих значение типа void, или в конструкторах (§R.12.1) и деструкторах (§R.12.4). Оператор return с выражением можно использовать только в функциях, которые возвращают значение. Значение выражения передается в ту функцию,которая вызвала данную функцию. Если нужно, значение преобразуется к типу функции, в которой выполняется return, по тем же правилам как при инициализации. Это может привести к вызову конструктора или копированию временных объектов (§R.12.2). Выход из функции по концу эквивалентен возврату без выдаваемого значения, что является незаконным для функции, возвращающей значение.

R.6.6.4 Оператор goto.

Оператор goto безусловно передает управление на оператор, помеченный идентификатором. Идентификатор должен быть меткой (§R.6.1), находящейся в текущей функции.