2016-12-04 2 views

ответ

6
void foo (int i , int k = 7); 

Этот прототип означает, что если вы звоните Foo только первым парам второй неявно устанавливается на 7.

foo(1, 2); // i=1, k=2 
    foo(5); // <==> foo(5, 7) i=1, k=7 

Этот механизм разрешается во время компиляции компилятором. Всякий раз, когда foo вызывается с отсутствием параметра k, компилятор автоматически вставляет его со значением 7 (то есть foo(5)). Если он отсутствует, выполняется фактический параметр (т. Е. foo(1, 2)).

1

Ваш пример не отличается, если вы указали foo без параметра по умолчанию.

Параметры по умолчанию обрабатываются компилятором. Когда компилятор встречает вызов foo только с одним параметром, он добавит вам второй параметр.

Например:

foo(3); 

будет трансформируются компилятором в

foo(3, 7); 

Это все.

0

Это называется инициализатором функций.

Если вы не назначаете второй параметр как foo (1,2), он выводит «7» на экран (когда вы используете foo (1)).

+2

Это называется аргументом по умолчанию. –

Смежные вопросы