std::function 简介

std::function 简介
1. 简介std::function是一个函数对象的包装器std::function的实例可以存储复制和调用任何可调用的目标包括函数lamada表达式绑定表达式或其他函数对象指向成员函数和指向数据成员的指针所存储的可调用对象被称为目标的std::function。如果一个std::function实例不包含目标则将其称为空。调用空的std::function对象会导致抛出异常std::bad_function_call。std::function满足CopyConstructible和CopyAssignable的要求。当std::function对象没有初始化任何实际的可调用元素调用std::function对象将抛出std::bad_function_call异常。2.1. Member types成员类型说明result_type返回类型argument_type如果函数对象只有一个参数那么这个代表参数类型。first_argument_type如果函数对象有两个个参数那么这个代表第一个参数类型。second_argument_type如果函数对象有两个个参数那么这个代表第二个参数类型。2.2. Member functions成员函数声明说明constructor构造函数constructs a new std::function instancedestructor析构函数 destroys a std::function instanceoperator给定义的function对象赋值operator bool检查定义的function对象是否包含一个有效的对象operator()调用一个对象2. 使用示例#include iostream #include functional int fun(int a, int b, int c, int d) { std::cout a std::endl; std::cout b std::endl; std::cout c std::endl; std::cout d std::endl; return 0; } class CCaller { public: int operator()(int a, int b, int c, int d) { std::cout a std::endl; std::cout b std::endl; std::cout c std::endl; std::cout d std::endl; return 0; } }; int main() { CCaller Caller; std::functionint(int, int, int, int) f; f [](int a, int b, int c, int d) - int { std::cout a std::endl; std::cout b std::endl; std::cout c std::endl; std::cout d std::endl; return 0; }; f(1, 2, 3, 4); f Caller; f(10, 20, 30, 40); f fun; f(100, 200, 300, 400); return 0; }从上面我们可以发现std::function可以表示函数lamada可调用类对象。参考文献C std::function技术浅谈_xdesk的博客-CSDN博客C std::function介绍和使用_jinzhu1911的博客-CSDN博客http://www.cplusplus.com/reference/functional/function/