a39*_*920 5 c++ function-pointers
在搜索如何在C++中将函数作为参数传递时,我只找到使用函数指针的示例.但是,以下内容在Visual Studio中按预期编译并输出"g20".这样声明f更好吗:
f(void (*fun)());
Run Code Online (Sandbox Code Playgroud)
代替
f(void fun());
Run Code Online (Sandbox Code Playgroud)
我的例子:
#include <iostream>
using namespace std;
int f(void fun());
void g();
int main() {
cout << f(g);
}
void g() {
cout << "g";
}
int f(void fun()) {
fun();
return 20;
}
Run Code Online (Sandbox Code Playgroud)
您可能更喜欢std::function<>而不是函数指针。它不仅可以存储函数指针,还可以存储 lambda、绑定表达式、函数对象(带 的对象operator())等。尤其是 lambda 将使您的 API 变得更好用。
int f(std::function<void()>& fun) {
fun();
return 20;
}
Run Code Online (Sandbox Code Playgroud)