做商演任务的网站,广州网站建设教程,自贡网站seo,wordpress 高并发类模板std::function是一种通用、多态的函数包装。std::function的实例可以对任何可以调用的目标实体进行存储、 复制和调用操作。这些目标实体包括普通函数、Lambda表达式、函数指针、以及其他函数对象等。std::function对象是对 C中现有的可调用实体的一种类型安全的包裹中现有的可调用实体的一种类型安全的包裹像函数指针这类可调用实体是类型不安全的 通常std::function是一个函数对象类它包装其它任意的函数对象被包装的函数对象具有类型为T1,...Tn的n个参数 并且可返回一个可转换到R类型的值。std::function使用模板转换构造函数接收被包装的函数对象。 准确来说可调用对象有如下几种定义 1是一个函数指针 2是一个具有operator()成员函数的类对象 3是一个可以被转换为函数指针的类对象 4是一个类成员函数指针
#includeiostream
#includefunctional
using namespace std;void func(int x)
{cout func name: __FUNCTION__ endl;cout x x endl;
}
class Foo
{
public:static int foo_func(int x){cout func name: __FUNCTION__ endl;cout x x endl;return x;}
};
class Bar
{
public:int operator()(int x){cout func name: __FUNCTION__ endl;cout x x endl;return x;}
};
int main()
{int x 10;//绑定一个普通函数std::functionvoid(int) fr1 func;fr1(x);//绑定一个类的静态成员函数std::functionint(int) fr2 Foo::foo_func;cout fr2(x) endl;Bar bar;fr2 bar;std::cout fr2(x) endl;return 0;
}