Урок №103. Параметры по умолчанию

  Юрий  | 

  |

  Обновл. 26 Ноя 2022  | 

 71073

 ǀ   4 

На этом уроке мы рассмотрим, что такое параметры по умолчанию в языке С++ и то, как их использовать.

Параметры по умолчанию

Параметр по умолчанию (или «необязательный параметр») — это параметр функции, который имеет определенное (по умолчанию) значение. Если пользователь не передает в функцию значение для параметра, то используется значение по умолчанию. Если же пользователь передает значение, то это значение используется вместо значения по умолчанию. Например:

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

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 (325 оценок, среднее: 4,95 из 5)
Загрузка...

Комментариев: 4

  1. Снова я:

    То что при перегрузке невозмозможно использовать параметры по умолчанию это конечно ужасно. Есть выход из этой ситуации?

  2. Илья:

    Ребят поздравляю всех кто дошёл до этого момента!!
    Вы прошли уже половину пути в изучении С++!!!
    (Впрочем как и я 🙂 )

    1. Владимир:

      Спасибо =)

Добавить комментарий

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