Функции в C++ для начинающих. Параметры по умолчанию

Тема параметров функций по умолчанию достаточно лёгкая. Вы можете иногда встречать их использование в чужих кодах, а после изучения статьи, возможно, и сами станете использовать.
  • В С++ к параметрам функции можно применять операцию =

Использование параметров по умолчанию:

Несмотря на то, что вовнутрь функции foo не ушло аргументов, функция с одним параметром сработала. Использование знака = в параметрах функции обозначает, что для этой функции аргумент можно будет не писать, а в случае ненаписанного аргумента параметр примет указанное значение:

Можно задавать много таких параметров, сколько угодно, но с одним условием: задавать параметры по умолчанию можно только в правой части списка параметров. Если перед таким параметром будет идти обычный параметр, без применения к нему =, тогда код не сможет быть скомпилирован:

Когда программист делает в списке параметров параметр по умолчанию, он, программист, предполагет возможность того, что при обращении к пишемой им функции можно будет не указывать аргументов: если аргументы в функцию уходить не будут, то параметры функции примут те значения, которые им предписаны, а если аргументы в функцию отдаваться будут, то параметры примут в себя значения аргументов. Это проще показать в коде:

В первом случае аргументов в функцию не отдаётся, поэтому параметр подбирает значение, которое указано для случая по умолчанию. Во втором случае аргумент отдаётся, поэтому параметр подбирает значение, хранимое ушедшим в функцию аргументом.
Таким образом вы можете немного экономить в тексте кода: ведь вместо написания двух функций мы написали одну.
  • Задание аргументов по умолчанию может упростить написание вызовов функции. Однако некоторые программисты считают, что для ясности лучше использовать параметры не по умолчанию.
Моя цель не рассуждать, хорошо это или плохо, а дать вам понять, что в С++ имеется такая возможность и просто объяснить смысл существования этой возможности.
В простейшем случае параметр по умолчанию может быть полезен для заполнения массива, например, по порядку с какого-то определённого числа: если для функции не указывается начало отсчёта, можно использовать параметр по умолчанию:

В этот же код можно добавить ещё один параметр со значением по умолчанию, например, выводить какую-нибудь информацию в ходе работы функции:

Смысл только в том, чтобы в некоторых случаях опускать указание аргументов при обращении к функции. Иногда это бывает действительно удобно.
Но есть здесь и подводные камни. Если вы опишете несколько функций, которые по сути будут похожи, и используете в них параметры по умолчанию, то код может не скомпилироваться:

В последнем коде срабатывает механизм перегрузки функций. Для компилятора, в нашем случае, обе функции имеют равное право на вызов, компилятор не знает, какую выбрать, и начинает на вас ругаться. Это одна из причин, почему некоторые программисты не любят параметры по умолчанию. Функции без параметров по умолчанию более ясны, чем функции с параметрами по умолчанию.
Если вы хотите знать, как это работает и почему оно работает, то вот вам понятное пояснение: Когда указываются параметры по умолчанию, они просто создаются внутри функции.
Вот вам два кода, которые на самом деле не одно и то же, но эквивалентны друг другу:


3 комментария на «“Функции в C++ для начинающих. Параметры по умолчанию”»

  1. Alexsandr:

    Вы не могли бы объяснить подробнее, что это означает?
    (!((i+1)%el)))

    • ! -Элемент логики. Читается как логическое НЕ, как отрицание,
      % — Это арифметическая операция, которая выдает остаток от деления. Ноль — всегда отрицание, НЕ ноль всегда НЕ отрицание.

      ================
      Такое выражение можно было записать так

  2. Alexsandr:

    Спасибо)

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

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

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/denis-kolisnichenko/rukovodstvo-po-komandam-i-shell-programmirovaniu-v-linux/?lfrom=15589587
Яндекс.Метрика