[英]Different parameter name in function prototype
我发现一个程序在函数原型设计和声明中使用了不同的参数,所以我做了一个基本程序。
#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;
}
我运行这个程序,它工作正常。 这是否意味着在“函数原型”和“函数声明”中不需要相同的参数名称?
是的,声明和定义中使用的参数名称不必相同。 相反,参数的类型(和顺序)应该相同。 事实上,参数名并不是必需的,尤其是在函数声明中,即使在定义中,如果不使用它们也可以省略。
(强调我的)
可以选择将标识符作为参数名称提供; 如果出现在函数定义 ( [dcl.fct.def] ) 中,它会命名一个参数。 [注意:特别是,参数名称在函数定义中也是可选的,不同声明中用于参数的名称和函数的定义不必相同。 如果参数名称出现在不是定义的函数声明中,则不能在其函数声明符之外使用,因为这是其潜在作用域 ([ basic.scope.proto ]) 的范围。 — 尾注 ]
和[dcl.fct]/8 :
返回类型、参数类型列表、引用限定符、 cv-qualifier-seq以及函数是否具有非抛出 异常规范,但没有默认参数 ( [dcl.fct.default] )或异常规范 ( [except.spec] ) 是函数类型的一部分。
请注意,参数类型列表(不包括它们的名称)是函数类型的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.