Другие языки программирования и технологии

Программирование С++: Обучение

Здравствуйте. Помогите разобраться.
Тема: Значение по умолчанию для параметров.
Вот тут, на скриншоте кода- "int sum(int a, int b=42)"
Параметру "b", присвоено значение числа 42, а далее, во втором вызове функции не передан второй параметр, поэтому вместо него используется значение по умолчанию 42.
Вопрос:
Как второй вызов функции, определяет, какой параметр по умолчанию использовать? И почему, если параметру "а" присвоить число, и убрать число от параметра "b", то в итоге, выдаёт ошибку? И зачем тогда пустой параметр " а" если ему нельзя присвоить число и число присвоено параметру "b"?
1 Первый по порядку. (a) и далее

2 Есс-но будет ошибка, т. к. если убрать =42 - функция будет явно требовать 2 параметра, а Вы пытаетесь передать 1 и значение b параметра тогда не определено.
Если Вы про случай sum(int a=10, int b=42), и sum(,5) - то в С++ нельзя пропускать параметры в отличие от н-р VB
M.a.n.a.s Izbasarov
M.a.n.a.s Izbasarov
84 764
Лучший ответ
Игорь Русский Нет, там где int sum( int a, int b =42). То "а" пустое. Зачем это "а", если есть " b" ? И если я уберу b, и при свою его значение параметру "а", то опять же выдаст ошибку так как ниже, имеется выражение int result =a +b, но если и это убрать то тоже ошибка.
Параметры функции -бывают формальные (указанные в описании функциии ее теле) и фактические.
Если формальному параметру присваивается значение по умолчанию (как b) то его можно не указывать при некоторых вызовах, оно подставится само. Для параметра а недопустимо не указывать фактическое значение.
Второе, при вызове функции фактические параметры подставляются в формальные в порядке, как описано в сигнатуре функции, по порядку, поэтому путаницы тут никакой не будет. Более того, даже при вызове функции из dll на другом языке программирования порядок тоже соблюдается, есть специальные соглашения.
SN
Sergej Novikov
36 000
>Как второй вызов функции, определяет, какой параметр по умолчанию использовать?
порядок имеет значение

>почему, если параметру "а" присвоить число, и убрать число от параметра "b", то в итоге, выдаёт ошибку?
параметры считываются справа налево, что создает пустой аргумент "a" https://stackoverflow.com/a/1123761/6229350

>И зачем тогда пустой параметр " а" если ему нельзя присвоить число и число присвоено параметру "b"?
скорее всего в виде примера, редко используются значения по умолчанию

https://en.cppreference.com/w/cpp/language/default_arguments
Сергей Нечипуренко Увы, движок сайта не позволяет выделять цитаты таким образом.