C++(6)
类模版 std::function
类模版 std::function 是可调用对象的包装器,可以包装除了类成员函数之外的所
有可调用对象。包括,普通函数,函数指针, lambda,仿函数。
通过指定的模板参数,它可以用统一的方式保存,并延迟执行它们。所谓的延迟执
行,就是回调了。
std:function<retType(argType,argType,…)>
#include <iostream>
#include <functional>
using namespace std;
// 定义一个加法函数
int add(int a, int b) {
return a + b;
}
// 定义一个减法函数
int sub(int a, int b) {
return a - b;
}
// 定义一个函数指针类型,指向返回值为int,参数为两个int的函数
typedef int (*fun_ptr)(int, int);
// 定义一个类Divide,重载了()运算符,用于实现除法
class Divide{
public:
int operator()(int a, int b){
return a / b;
}
};
int main() {
// 使用std::function包装add函数
auto f = function<int(int, int)>(add);
cout << f(1, 2) << endl; // 输出3
// 使用函数指针p指向sub函数
fun_ptr p