Урок №109. Параметри за замовчуванням

  Юрій  | 

  Оновл. 19 Січ 2021  | 

 230

На цьому уроці ми розглянемо, що таке параметри за замовчуванням в мові С++ і те, як їх використовувати.

Параметри за замовчуванням

Параметр за замовчуванням (або «необов’язковий параметр») — це параметр функції, який має визначене (за замовчуванням) значення. Якщо користувач не передає в функцію значення для параметра, то використовується значення за замовчуванням. Якщо ж користувач передає значення, то це значення використовується замість значення за замовчуванням. Наприклад:

Результат виконання програми:

a: 1
b: 5
a: 6
b: 7

У першому виклику функції ми не передаємо аргумент для b, тому функція використовує значення за замовчуванням — 5. У другому виклику ми передаємо значення для b, тому воно використовується замість параметра за замовчуванням.

Параметр за замовчуванням — це відмінний варіант, коли функція потребує значення, яке користувач може перевизначити, а може і не перевизначити. Наприклад, ось декілька прототипів функцій, для яких можуть використовуватися параметри за замовчуванням:

Декілька параметрів за замовчуванням

Функція може мати декілька парамерів за замовчуванням:

При наступних викликах функції:

Результат наступний:

Values: 3 4 5
Values: 3 4 12
Values: 3 11 12
Values: 10 11 12

Зверніть увагу, надати аргумент для параметру c, не надаючи при цьому аргументи для параметрів a і b — не можна (перестрибувати через параметри забороняється). Це пов’язано з тим, що мова C++ не підтримує наступний синтаксис виклику функції: printValues(,,5). З цього випливають наступні два правила:

Правило №1: Всі параметри за замовчуванням в прототипі або у визначенні функції повинні знаходитися праворуч. Наступне викличе помилку:

Правильно:

Правило №2: Якщо є більше одного параметра за замовчуванням, то найлівішим параметром за замовчуванням повинен бути той, який з найбільшою ймовірністю (серед всіх інших параметрів) буде явно перевизначений користувачем.

Оголошення параметрів за замовчуванням

Як тільки параметр за замовчуванням оголошено, повторно оголосити його вже не можна. Це означає, що для функції з попереднім оголошенням і визначенням, параметр за замовчуванням оголосити можна або в попередньому оголошенні, або у визначенні функції, але не в обох місцях відразу. Наприклад:

Рекомендується оголошувати параметри за замовчуванням в попередньому оголошенні, а не у визначенні функції, так як попередні оголошення можна використовувати в декількох файлах — при такому розкладі параметри за замовчуванням буде легше побачити (особливо, якщо попереднє оголошення знаходиться в заголовку). Наприклад:

boo.h:

main.cpp:

Зверніть увагу, в прикладі, наведеному вище, використовується параметр за замовчуванням b для функції printValues(), так як main.cpp підключає boo.h, який має попереднє оголошення функції printValues() з оголошеним параметром за замовчуванням.

Правило: Оголошуйте параметри за замовчуванням в попередньому оголошенні функції, в іншому випадку (якщо функція не має попереднього оголошення) — оголошуйте у визначенні функції.

Параметри за замовчуванням і перевантаження функцій

Функції з параметрами за замовчуванням можуть бути перевантажені. Наприклад:

Якщо користувач викличе просто print() (без параметрів), то виведеться пробіл, що буде результатом виконання print(' ').

Однак, варто зазначити, що параметри за замовчуванням НЕ відносяться до параметрів, які враховуються при визначенні унікальності функції. Відповідно, наступне не допускається:

При виклику printValues(10) компілятор не зможе визначити, чи хочете ви викликати printValues(int) чи printValues(int, 15) (зі значенням за замовчуванням).

Висновки

Параметри за замовчуванням — це корисний механізм для вказування параметрів, при якому користувач може перевизначити значення за замовчуванням, або не перевизначати їх взагалі. Вони часто використовуються в мові C++, і їх застосування ви побачите вже на наступних уроках.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (3 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *