Другое имя параметра в прототипе функции

Я нашел программу, которая использует различные параметры при создании и объявлении функций, поэтому я сделал основную программу.

#include <iostream>
using namespace std;

void add(int a, int b);

int main()
{
add(3,4);
}

void add(int c, int d){
int e = c + d;
cout << e << endl;
}

Я запускаю эту программу, и она работает. Означает ли это, что нет необходимости использовать одно и то же имя параметра как в «прототипировании функции», так и в «объявлении функции»?

5

Решение

Да, имя параметров, используемых в объявлении и определении, не должно совпадать. Вместо этого тип параметров (и порядок) должен быть одинаковым. На самом деле, имена параметров не нужны, особенно в объявлении функций, даже в определении они также могут быть опущены, если вы их не используете.

$ 8.3.5 / 13 Функции
[Dcl.fct]
:

(акцент мой)

При желании идентификатор может быть предоставлен как имя параметра; если присутствует в определении функции ([Dcl.fct.def]), он называет параметр. [Примечание: В частности, имена параметров также необязательны в определениях функций и имена, используемые для параметра в разных объявлениях, и определение функции не обязательно должны совпадать. Если имя параметра присутствует в объявлении функции, которое не является определением, его нельзя использовать за пределами его объявления функции, поскольку это является степенью его потенциальной области видимости ([basic.scope.proto]). — конец примечания]

А также 8,3,5 $ / 8 функций
[Dcl.fct]
:

Тип возврата, список параметров типа, реф-классификатор, резюме-спецификатор-сл, и есть ли функция без броска Исключение-спецификация, но не аргументы по умолчанию ([Dcl.fct.default]) или спецификация исключения ([Except.spec]), являются частью типа функции.

Обратите внимание, что список параметров-типов, не включая их имена, является частью типа функции.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]