Існують два способи завершення виконання функції і повернення у точку програми, з якої здійснено виклик. Перший - завершення виконання функції з використанням оператора повернення return, як показано у попередньому прикладі. Цей спосіб найчасітше застосовують тоді, коли функція має тип результату відмінний від void. Причому, як видно з попереднього прикладу, в тілі функції може бути декілька операторів return. Цю саму функцію max можна було б реалізувати і таким чином:
int max(int a, int b)
{
int rez;
if(a>b) rez=a; else rez=b;
return rez;
}
У даному випадку, функція спочатку обчислює результат у змінній rez, а потім повертає результат через оператор return.
Інший спосіб завершення виконання функції полягає у послідовному проходженні всіх операторів тіла функції до закриваючої фігурної дужки. Цей спосіб можливий лише для функцій з типом результату void, хоча як показує наступний приклад він не є єдино можливим способом виходу з функцій типу void.
void divide(float x, float y)
{
float z;
if (x == 0) return; /* не можна ділити на нуль*/
z = y / x;
cout<<"z="<<z<<endl;
}
Отже, якщо функція має тип результату відмінний від void, то єдиний спосіб виходу з неї – це оператор return (якщо звісно ми не хочемо отримати повідомлення компілятора про синтаксичну помилку).