С++ для начинающих



         

Возврат значения


В теле функции может встретиться инструкция return. Она завершает выполнение функции. После этого управление возвращается той функции, из которой была вызвана данная. Инструкция return может употребляться в двух формах:

return;

return expression;

Первая форма используется в функциях, для которых типом возвращаемого значения является void. Использовать return в таких случаях обязательно, если нужно принудительно завершить работу. (Такое применение return напоминает инструкцию break, представленную в разделе 5.8.) После конечной инструкции функции подразумевается наличие return. Например:

void d_copy( double "src, double *dst, int sz )

{

    /* копируем массив "src" в "dst"

    * для простоты предполагаем, что они одного размера

    */

    // завершение, если хотя бы один из указателей равен 0

    if ( !src || !dst )

        return;

    // завершение,

    // если указатели адресуют один и тот же массив

    if ( src == dst )

        return;

    // копировать нечего

    if ( sz == 0 )

        return;

    // все еще не закончили?

    // тогда самое время что-то сделать

    for ( int ix = 0; ix < sz; ++ix )

        dst[ix] = src[ix];

    // явного завершения не требуется

}

Во второй форме инструкции return указывается то значение, которое функция должна вернуть. Это значение может быть сколь угодно сложным выражением, даже содержать вызов функции. В реализации функции factorial(), которую мы рассмотрим в следующем разделе, используется return следующего вида:

return val * factorial(val-1);

В функции, не объявленная с void в качестве типа возвращаемого значения, обязательно использовать вторую форму return, иначе произойдет ошибка компиляции. Хотя компилятор не отвечает за правильность результата, он сможет гарантировать его наличие. Следующая программа не компилируется из-за двух мест, где программа завершается без возврата значения:

// определение интерфейса класса Matrix

#include "Matrix.h"

bool is_equa1( const Matrix &ml, const Matrix &m2 )




Содержание  Назад  Вперед