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

时间:2015-09-27 15:06:50

标签: c++ pointers reference

我有一个像这样的代码

int def_function(typeA *, double &) {}

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

4 个答案:

答案 0 :(得分:3)

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

int def_function(typeA *, double &)

答案 1 :(得分:2)

在此函数中,不使用任何参数。所以没有必要给它们命名。

这些变量的含义是:

  • typeA *指向typeA
  • 类型对象的指针
  • double &类型为double的对象的引用。意味着,“双”将通过其非const引用传递,即它可以被更改。

答案 2 :(得分:1)

C ++ 14标准第8.3.5.11节说:

  

可以选择提供标识符作为参数名称;如果   在函数定义(8.4)中,它命名一个参数   (有时称为“正式论证”)。注意:特别是参数   名称在函数定义中也是可选的和用于a的名称   不同声明中的参数和函数的定义   不一定是一样的。

请记住,这在C中是不同的。在C中,必须给正式命名。参数。

C99标准说:

  

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

答案 3 :(得分:0)

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