
ФУНКЦІЇ.
Перерахуємо вже розглянуті властивості функцій:
• Функція є програмним блоком.
• Функція може бути виконана, як у вигляді підпрограми (1_16), так і у вигляді самостійної функції, яка може використовуватися у будь-якій програмі (1_21).
• Функція може мати або не мати аргументи та значення, яке повертається.
• Прототип функції слугує її оголошенням. Спочатку йде прототип або опис функції, а потім перший виклик функції.
• У тілі функції може бути інша функція (1_23, 1_25).
• При виклику функції аргументом може бути виклик іншої функції (1_25) або арифметичний вираз (1_22).
ПЕРЕВАНТАЖЕННЯ ФУНКЦІЙ
Змінні мають тип, який при дії з ними треба враховувати. Для функцій визначені типи значень,що повертаються, та типи аргументів.
![]() |
Таблиця 1.2. Варіанти прототипів
Коли при виклику функції застосувати аргумент непередбаченого типу, компілятор може зробити спробу привести типи по своїм правилам (але на це не стоїть надіється) або зафіксує помилку. С++ дозволяє визначити декілька функцій з одним й тим же ім’ям, але з різним набором аргументів, що має назву перевантаження функцій.
Приклад. У стандартній бібліотеці є три окремих функцій для визначення абсолютних значень трьох типів:
1) Int abs (int); 2) double fabs (double); 3) long labs (long);
Для здійснення перевантаження треба записати три варіанта прототипу нової функції та три варіанта опису функції, що й зроблено в наступній програмі. Прототипи записані у вигляді коментаря.
При виклику функції x=abs1(a) компілятор визначає тип змінної а та виконує потрібний варіант. Для перевантаження функції застосовується нове ім’я abs1.
Можна перевантажувати функції, у котрих різняться аргументи по типу, кількості, порядку слідування.
Неможливо перевантажувати функції, що різняться тільки типом значення, що повертаються.
Всередині тіл функцій, що перевантажені, можна виконувати різні алгоритми.
Програма – перевантажена функція abs1.
/*файл SUBPROG\abs.cpp – Перевантаження функцій abs, fabs, labs*/
//int abs1(int); для цілих чисел
//double abs1(double); для чисел типу double
//long abs1(long); для цілих типу long







