(原创)C++11改进我们的程序之简化我们的程序(五)

这次要讲的是:c++11中的bind和function

std::function

它是函数、函数对象、函数指针、和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,皇冠娱乐,引用函数,成员函数的指针。
以统一的方式处理函数、函数对象、函数指针、和成员函数。
允许保存和延迟执行函数。

函数和成员函数作为functionvoid G();struct A{void H(){}};std::function f = G; //全局函数A a;std::function f 1= std::bind(&A::H, a); //成员函数可以用function取代函数指针。因为它可以保存函数延迟执行,所以比较适合作为回调函数,也可以把它看做类似于c#中特殊的委托,只有一个成员的委托。struct A{A(std::function& f):m_callback(f)void Notify(){m_callback();//回调到上层}std::function m_callback;}function还可以作为函数入参,这样可以在函数外部控制函数的内部行为了,让我们的函数变得更加灵活。void Foo(int x, std::function& f){if(x%2==0)f(x);}void G(int x){cout