Значення формальних параметрів за умовчанням

У мові С++ при визначенні функцій допускається конструкція вигляду

<ReturnType>FunctionName(<type1>x1,<type2>x2,...,<typen>xn, <type n1>xn1=v1,<typen2>xn2=v2,...,<typenk>xnk=vk),

де ReturnType, typej – ідентифікатори типів даних, FunctionName – ідентифікатор імені функції, vj – константні вирази. Параметрам xn1, xn2, ..., xnk присвоюються константні вирази v1, v2, ..., vk безпосередньо в сигнатурі функції при її визначенні. Ці параметри називатимемо параметрами за умовчанням. Діє правило: якщо параметр є параметром за умовчанням, то всі параметри, які стоять праворуч від нього, також мають бути параметрами за умовчанням. Специфіка параметрів за умовчанням полягає в тому, що всі вони (чи частина з них) можуть бути відсутніми в момент виклику функції. Якщо в момент виклику кількість фактичних параметрів не менше кількості звичайних параметрів функції й не більше кількості всіх можливих параметрів (у протилежному випадку буде помилка), то після ініціалізації всіх можливих параметрів зліва направо компілятор буде вважати, що всі інші параметри ініціалізовані значеннями, які присвоєні їм у сигнатурі.

Нехай визначені функції:

void Name1(float x,int y,char z='b')

{printf("x=%0.1f y=%d z=%c\n",x,y,z)}

void Name2(float x,int y=16,char z='a')

{printf("x=%0.1f y=%d z=%c\n",x,y,z)}

Допускається такий їх виклик:

Name1(1.0,5,'g');

Name1(1.0,5);

Name2(2.0,25,'a');

Name2(2.0,25);

Name2(2.0);


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: