C++中std::function常见用法

C++标准库中的std::function是一个通用的函数封装,可以用来存储、复制、调用任何可调用对象(函数、函数指针、成员函数指针、lambda表达式等)。以下是std::function的一些常见用法:

定义std::function类型
std::function类型的定义类似于函数指针类型,例如:


std::function<int(int)> func;
表示一个参数为int类型,返回值为int类型的可调用对象。

绑定函数或函数对象
可以将函数或函数对象绑定到std::function对象上,例如:

复制代码
int add(int a, int b) {
return a + b;
}

struct Add {
int operator()(int a, int b) {
return a + b;
}
};
复制代码
std::function<int(int, int)> f1 = add;
std::function<int(int, int)> f2 = Add();

调用std::function对象
可以像调用函数一样调用std::function对象,例如:

int result1 = f1(1, 2);
int result2 = f2(3, 4);

 

检查std::function对象是否为空
可以使用std::function对象的bool()运算符来检查它是否为空,例如:

std::function<int(int, int)> f;
if (f) {
int result = f(1, 2);
}

使用std::bind绑定成员函数或对象的成员函数
std::bind可以将成员函数或对象的成员函数绑定到std::function对象上,例如:

复制代码
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};

Calculator calc;
std::function<int(int, int)> f = std::bind(&Calculator::add, &calc, std::placeholders::_1, std::placeholders::_2);

int result = f(1, 2);
复制代码

以上是std::function的一些常见用法,还有其他更高级的用法,需要根据具体情况使用。

posted @   Justin_Hu  阅读(500)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示