2016-08-30 5 views
5

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

#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; 
} 

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

+1

опечатки в вашем примере могут запутаться. В объявлении вы используете 'it' вместо' int', а ваш 'include' ошибочен – Hayt

ответ

9

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

$8.3.5/13 Functions [dcl.fct]:

(курсив мой)

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

И $8.3.5/8 Functions [dcl.fct]:

Тип возврата, параметр типа списку, то ref-qualifier, то cv-qualifier-seq, и имеет ли функция а не метания exception-specification, но а не аргументы по умолчанию ([dcl.fct.default]) или спецификация исключения ([except.spec]), являются частью типа функции.

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

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

  • Нет связанных вопросов^_^