目录
1.function库概述 ^
Boost.Function库包含一系列类模板,它们是函数对象包装器。这个概念类似于广义回调。它与函数指针共享功能,它们都定义了一个调用接口(例如,一个带有两个整数参数的函数并返回一个浮点值),通过它可以调用某些实现,并且调用的实现可能会在整个过程中发生变化。可以使用函数指针来推迟调用或进行回调的任何地方,可以使用Boost.Function来允许用户在目标的实现中具有更大的灵活性。目标可以是任何“兼容”的函数对象(或函数指针),这意味着Boost.Function指定的接口的参数可以转换为目标函数对象的参数。
使用例子 ^
#include<iostream>
#include<boost/function.hpp>
using namespace boost;
using std::cout;
using std::endl;
struct func {
float operator()(int x,int y) const { return((float)x) /y; };
};
int main()
{
//float为返回值,小括号内为参数
function<float(int x, int y)> f;
f = func();
cout << f(5, 4) << endl;
//C++标准中的lambda表达式
auto p = [](int x, int y) ->float {return ((float)x) / y; };
cout << p(5, 4) << endl;
}
相较于function,C++11标准中的lambda表达式,更简练直观,且书写方便,可以说是function的升级版。