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

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

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

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

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

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

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

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

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

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


Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

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

  • Alexsandr говорит:

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




    0



    0
    • admin говорит:

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

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




      0



      0
  • Alexsandr говорит:

    Спасибо)




    0



    0

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

Ваш e-mail не будет опубликован.

Поиск

 
     

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

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

- Что ты пишешь? - спросили программиста. - Сейчас запустим - узнаем! - ответил программист.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок