在定义函数时,指针或引用变量没有给定名称

Pointer or reference variables are not given a name when defining function

本文关键字:变量 定名称 引用 函数 定义 指针      更新时间:2023-10-16

我有一个像这样的代码

int def_function(typeA *, double &) {}

请您解释一下这些变量的含义,为什么它们有类型但没有名称?

方法签名说有一个函数名def_function,它有两个类型为'pointer of typeA ''reference of double'的参数。参数变量的名称是可选的,但如果在函数定义中没有名称,则不能引用或使用任何这些变量。所以如果你在你的函数中不使用这些变量,你可以省略参数名,否则它是必需的。

int def_function(typeA *, double &)

在这个函数中,没有使用任何参数。这样就不需要给它们命名了

这些变量的含义是:

  • typeA *指向typeA类型对象的指针
  • double &double类型对象的引用。这意味着,"double"将通过其非const引用传递,也就是说,它可以被更改。

c++ 14标准第8.3.5.11节规定:

标识符可以作为参数名提供;如果它出现在函数定义(8.4)中,为参数命名(有时称为"形式论证")。注意:特别是参数在函数定义中,名称也是可选的参数在不同的声明和函数的定义不必相同

记住这在C中是不同的。在C中,必须给formal一个名字。参数。

C99标准规定:

[6.9.1.5]如果声明符包含形参类型列表,则每个参数的声明应该包括一个标识符,除了由单个参数组成的参数列表的特殊情况类型为void的,在这种情况下,不能有标识符。

  • 你必须在函数定义和使用这些变量时命名函数参数。
  • 如果稍后定义,则不必在函数声明时命名参数。
  • 你不必为你不使用的参数命名。