函数原型中的参数名称不同

Ath*_*hul 5 c++ parameters function names

我找到了一个在函数原型设计和声明中使用不同参数的程序,所以我制作了一个基本程序.

#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;
}
Run Code Online (Sandbox Code Playgroud)

我运行这个程序,它的工作原理.这是否意味着在"功能原型设计"和"功能声明"中都没有必要使用相同的参数名称?

son*_*yao 9

是的,声明和定义中使用的参数名称不必相同.相反,参数(和顺序)的类型应该相同.实际上,参数名称在函数声明中并不是必需的,即使在定义中,如果不使用它们也可以省略它们.

$ 8.3.5/13函数[dcl.fct]:

(强调我的)

可选地,可以提供标识符作为参数名称; 如果存在于函数定义([dcl.fct.def])中,则为参数命名.[注意:特别是,参数名称在函数定义中也是可选的,并且在不同声明中用于参数的名称和函数的定义不必相同.如果参数名称存在于不是定义的函数声明中,则不能在其函数声明之外使用它,因为这是其潜在作用域的范围([ basic.scope.proto ]). - 结束说明]

$ 8.3.5/8函数[dcl.fct]:

返回类型,参数类型列表,ref-qualifier,cv-qualifier-seq,以及函数是否具有非抛出异常规范,但不是默认参数([dcl.fct.default])或者异常规范([except.spec])是函数类型的一部分.

请注意,参数类型列表(不包括其名称)是函数类型的一部分.