69709

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

Лекция

Информатика, кибернетика и программирование

Значення за замовчанням задається за допомогою синтаксичної конструкції яка дуже схожа на ініціалізацію змінної. Наприклад наступний оператор оголошує що функція myfunc отримує один аргумент типу double що за замовчанням приймає значення...

Украинкский

2014-10-09

24.5 KB

0 чел.

Тема 9: Параметри по замовчуванню

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

void myfunc (double d =  0.0)

Тепер функцію myfunc() можна викликати двома способами.

myfunc (198 .234) ;   //  Передача  явного  значення

myfunc O; //   Функція  використовує   значення  за замовчанням

При першому виклику параметр d отримує значення 198.234. Під час другого виклику параметр d автоматично приймає значення 0.0.

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

Створюючи функції з аргументами за замовчанням, важливо пам'ятати, що їх значення можна задати лише один раз під час оголошення функції. У попередньому приклад значення за замовчанням було вказане в прототипі функції iputs (). Якщо спробувати задати нове (або навіть те ж саме значення) у визначенні функції iputs() компілятор видасть повідомлення про помилку. Хоча значення аргументів по замовчуванню перевизначити неможливо, можна задавати різні значення для кожної версії перевантаженої функції.

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

void iputs(float a=1.23, int b, int z=0);

Почавши визначати параметри, що приймають значення за замовчанням, не можна перемішувати їх звичайними параметрами. Інакше кажучи, наступне оголошення є невірним.

int myfunc(float  f,   char  *str,   int  i=10,   int j);

Оскільки значення параметра i задається за замовчанням, параметр j також повинен мати значення за замовчанням.

Параметри конструктора теж можуть мати значення за замовчанням.