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

  Юрий  | 

    | 

  Обновл. 2 Июн 2019  | 

 13188

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

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

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

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

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 #include boo.h, который имеет предварительное объявление функции printValues() с объявленным параметром по умолчанию.

Правило: Объявляйте параметры по умолчанию в предварительном объявлении функции, в противном случае (если функция не имеет предварительного объявления) объявляйте в определении функции.

Параметры по умолчанию и перегрузка функций


Функции с параметрами по умолчанию могут быть перегружены. Например:

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

Однако стоит отметить, что параметры по умолчанию НЕ относятся к параметрам, которые учитываются при определении уникальности функции. Следовательно, следующее не допускается:

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

Заключение

Параметры по умолчанию — это полезный механизм указания параметров, при котором пользователь может переопределять значения по умолчанию, либо не переопределять их вообще. Они часто используются в C++, и их применения вы увидите уже в следующих уроках.


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (74 оценок, среднее: 4,91 из 5)
Загрузка...

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

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