std::function 是 C++11 的可调用对象包装器,能统一处理函数、lambda、成员函数等,常用于回调、任务队列等场景,语法为 std::function,支持空状态检查,虽有性能开销但使用灵活。

std::function 是 C++11 引入的一个通用可调用对象包装器,定义在 头文件中。它可以封装、存储和调用任何可调用的目标,比如普通函数、lambda 表达式、函数对象(仿函数)、成员函数指针以及 bind 表达式等。
基本语法
std::function 的模板参数是函数签名,格式为:
std::function
例如:
std::function 可以保存接受两个 int 并返回 int 的可调用对象。 std::function 可以保存无参无返回值的函数。
封装普通函数
可以将普通函数赋值给 std::function 对象:
立即学习“C++免费学习笔记(深入)”;
void greet() {
std::cout }
std::function func = greet;
func(); // 输出: Hello!
配合 Lambda 使用
lambda 表达式是最常见的使用场景之一:
std::function add = [](int a, int b) {
return a + b;
};
std::cout
作为函数参数传递
std::function 常用于回调机制,把函数作为参数传入另一个函数:
void execute(std::function callback) {
callback();
}
execute([]{ std::cout
存储到容器中
可以把不同类型的可调用对象存入 vector 等容器:
std::vector> tasks;
tasks.push_back([]{ std::cout tasks.push_back(greet);
for (auto& task : tasks) {
task();
}
绑定成员函数
结合 std::bind 或 lambda 可以绑定类的成员函数:
struct Calculator {
int add(int a, int b) { return a + b; }
};
Calculator calc;
std::function func = std::bind(&Calculator::add, &calc, std::placeholders::_1, std::placeholders::_2);
std::cout
或者用 lambda 更简洁:
std::function func = [&calc](int a, int b) {
return calc.add(a, b);
};
空状态检查
std::function 可以像指针一样判断是否为空:
std::function func;
if (func) {
func();
} else {
std::cout }基本上就这些常见用法。std::function 提供了灵活的抽象能力,特别适合需要统一处理各种可调用对象的场景,比如事件回调、任务队列、策略模式等。虽然有一定性能开销(涉及类型擦除),但在大多数应用中是可以接受的。
以上就是c++++中的std::function怎么使用_c++ std::function使用方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1476699.html
微信扫一扫
支付宝扫一扫