Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

2.3.4. Повернення функціями аргуметів

У мові програмування C++ багато бібліотечних функцій повертають значення. Наприклад, вже знайома нам функція abs() повертає абсолютне значення свого аргументу. Функції, які написані програмістом, також можуть повертати значення. У мові програмування C++ для повернення значення використовують настанову return. Загальний формат цієї настанови є таким:

return значення;

Неважко здогадатися, що тут елемент значення є значенням, що повертається функцією.

Щоб продемонструвати процес повернення функціями значень, переробимо попередню програму так, як це показано нижче. У цій версії функція fun_z() повертає добуток своїх аргументів. Звернемо Вашу увагу на те, що розташування функції праворуч від оператора присвоєння означає присвоєння змінній (розташованій зліва) значення, що повертається цією функцією.

Код програми 2.9. Демонстрація повернення функціями значень

#include <iostream> // Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

int fun_z(int x, int y); // Прототип функції fun_z().

int main()

{

int rezult;

rezult = fun_z(10, 11); // Присвоєння значення

// що повертається функцією.

cout << "Відповідь дорівнює " << rezult;

getch(); return 0;

}

// Ця функція повертає значення.

int fun_z(int x, int y)

{

return x * y; // Функція повертає добуток x і y.

}

У наведеному прикладі функція fun_z() повертає результат обчислення виразу x * y за допомогою настанови return. Потім значення цього результату присвоюється змінній rezult. Таким чином, значення, що повертається настановою return, стає значенням функції fun_z() у програмі, яка її викликає.

Оскільки у цій версії програми функція fun_z() повертає значення, то її ім'я у визначенні не передує слов void1. Оскільки існують різні типи змінних, існують і різні типи значень, що повертаються функціями. Тут функція fun_z() повертає значення цілочисельного типу. Тип значення, що повертається функцією, передує її імені як у прототипі, так і у визначенні.

У попередніх версіях мови програмування C++ для типів значень, що повертаються функціями, існувала домовленість, що діє за замовчуванням. Якщо тип значення, що повертається функцією, не вказано, то передбачалося, що ця функція повертає цілочисельне значення. Наприклад, функція fun_z(), згідно з тією домовленістю, могла бути записана так:

fun_z(int x, int y) // За замовчуванням як тип значення,

// що повертається функцією, використовується тип int.

{

return x * y; // Функція повертає добуток x і y.

}

У цьому записі за замовчуванням передбачається цілочисельний тип значення, що повертається функцією, оскільки не задано ніякого іншого типу. Проте правило встановлення цілочисельного типу за замовчуванням було знехтувано стандартом мови програмування C++. Незважаючи на те, що більшість компіляторів підтримують це правило заради зворотної сумісності, програміст повинен безпосередньо задавати тип значення, що повертається кожною функцією, яку він пише. Але, якщо Вам доведеться мати справу зі старими версіями С++-програм, то цю домовленість необхідно мати на увазі.

Досягши настанови return, функція негайно завершується, а увесь решта програмний код ігнорується. Функція може містити декілька настанов return. Повернення з функції можна забезпечити за допомогою настанови return без вказання значення, що повертається, але таку її форму допустимо застосовувати тільки для функцій, які не повертають ніяких значень і оголошені з використанням ключового слова void.