0

这是此页面的复制粘贴: 复制初始化和直接初始化在 C++ 中是否有区别?

一个 c3(A());

[...]

第三个为函数 c3 创建一个函数声明,该函数返回一个 A 并接受一个函数指针,该函数指针指向一个返回 A 的函数(阅读 8.2)。

我认为以下是不带参数并返回 A 的函数指针的正确语法。

A c3( A (*pFunction)() );

这两种语法是否等效?

4

1 回答 1

0

是的。在函数声明中,您可以省略参数名称。你甚至可以在定义中省略它们,但是你不能使用它们。这避免了例如 gcc 的“未使用参数”警告。

编辑正如 OP 指出的那样,我的论点是不正确的,因为*我忽略了它。将 A() 解释为函数指针的原因在于标准的第 8.2.7 节,其中将这个模棱两可的表达式定义为指向函数的指针。

于 2013-10-24T09:27:32.433 回答