gpt4 book ai didi

c++函数作为没有指针的参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:47 28 4
gpt4 key购买 nike

在搜索如何在 C++ 中将函数作为参数传递时,我只找到使用函数指针的示例。但是,以下内容会按预期在 Visual Studio 中编译和输出“g20”。像这样声明 f 是否更好:

f(void (*fun)());

代替

f(void fun());

我的例子:

#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;
}

最佳答案

您可能更喜欢 std::function<> 而不是函数指针。它不仅可以存储函数指针,还可以存储 lambda、绑定(bind)表达式、函数对象(带有 operator() 的对象)等。尤其是 lambda 将使您的 API 更好用。

int f(std::function<void()>& fun) {
fun();
return 20;
}

关于c++函数作为没有指针的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com