c++ - C++ 中未命名函数指针的语法

标签 c++

我正在研究最令人烦恼的解析,我偶然发现了这样的事情:

Foo bar(Baz()); // bar is a function that takes a pointer to a function that returns a Baz and returns a Foo

这与 return-type(*name)(parameters) 的典型语法完全不同。括号是参数列表的括号,还是名称?

最佳答案

完全明确的形式:

Foo bar(Baz f());

bar 是一个接受单个参数 f 的函数,它是一个返回 Baz 的函数(不接受任何参数)。

不命名参数:

Foo bar(Baz ());

bar 最终采用指向函数的指针的原因是函数不能按值传递,因此将参数声明为函数会自动将其衰减为指针。上面的声明等价于:

Foo bar(Baz (*)());

// or:
Foo bar(Baz (*f)());  // with a named parameter

这类似于 void foo(int [10]),其中 int [10] 也表示参数列表中的 int *

关于c++ - C++ 中未命名函数指针的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52581933/

相关文章:

c++ - 跨两个 DLL 的 `using` 语句

c++ - 使用 C++ 解码 Adob​​e Flex Base64encoder 的输出

c++ - 如何在 Linux 中为 Qt 应用程序制作控制台 cmd?

c++ - std::condition_variable_any 有尴尬的语义吗?

c++ - SQL 语句的解析树 - 精确针对 "SELECT"语句

将值返回到 switch 语句的 C++ 函数

javascript - 为什么 C++ CGI form_iterator 值没有进入 XMLHttpRequest 异步 Ajax 请求?

c++ - VarBstrFromI4 改变了程序中其他一些 BSTR 的值

c++ - 如何在 Qt C++ 应用程序中显示带有大量小部件的可滚动列表作为项目?

c++ - 如何从 URL 下载图像到本地目录?