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

std::function 是 C++11 引入的一个通用可调用对象包装器,定义在
基本语法
std::function 的模板参数是函数签名,格式为:
std::function例如:
-
std::function
可以保存接受两个 int 并返回 int 的可调用对象。 -
std::function
可以保存无参无返回值的函数。
封装普通函数
可以将普通函数赋值给 std::function 对象:
立即学习“C++免费学习笔记(深入)”;
void greet() {std::cout }
std::function
func(); // 输出: Hello!
配合 Lambda 使用
lambda 表达式是最常见的使用场景之一:
return a + b;
};
std::cout
作为函数参数传递
std::function 常用于回调机制,把函数作为参数传入另一个函数:
void execute(std::functioncallback();
}
execute([]{ std::cout
存储到容器中
可以把不同类型的可调用对象存入 vector 等容器:
std::vector<:function>> 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
std::cout
或者用 lambda 更简洁:
std::functionreturn calc.add(a, b);
};
空状态检查
std::function 可以像指针一样判断是否为空:
std::functionif (func) {
func();
} else {
std::cout }











