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的一些常见用法,还有其他更高级的用法,需要根据具体情况使用。
标签:std,function,函数,int,C++,对象,add From: https://www.cnblogs.com/gchenghu/p/17248254.html