我有一个像这样的代码
int def_function(typeA *, double &) {}
请问您能解释这些变量的含义,为什么它们有类型但没有名称?
答案 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)