C++Boost库学习之function库

目录

1.function库概述
  使用例子

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的升级版。

猜你喜欢

转载自blog.csdn.net/qq_17044529/article/details/82610131