C++中的boost::function库简介

这篇文章介绍了C++中的boost::function库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

boost::function Boost.Function库用来提供一个对象化的函数指针,通过它可以很容易的将一个函数封装为仿函数。

boost::function库可以支持自由函数,函数对象,类成员函数。而且参数个数多达10个。boost::function库利用模板技术来实现。生成的代码有很高的运行效率。首先我们还是以一个例子简单的说明它的用法:

#include  #include  using namespace std; float add(int x,float y) { return x + y; } int main() { boost::function f = &add; cout<<"add(3,2) is "<

在上面的例子中,

定义了一个仿函数,它指向add函数。这个是一种比较容易理解的方式,也是boost推荐的写法,但有的编译器不支持(其实大多数主流编译器都支持)这种模板的语法,不支持的编译器包括:

  • Microsoft Visual C++ 6.0, 7.0

  • Borland C++ 5.5.1

  • Sun WorkShop 6 update 2 C++ 5.3

  • Metrowerks CodeWarrior 8.1

如果你用了上述编译器,则应使用boost::function2 f;的形式。

如果只是封装普通函数(功能类似函数指针),则使用方式和普通函数指针类似,可以直接通过"="来进行函数的封装,通过"()"来实现函数的调用。

如果用它来封装成员函数(用函数指针来指向成员函数用起来可不是一般的恶心),可以通过如下两种方式:

  • 通过boost::bind库实现。

  • 通过stl库std::bind1st和std::mem_fun 函数组合实现。

下面是一个简单的示例:

struct X { bool foo(int a){ cout< f; X x; f = std::bind1st( std::mem_fun(&X::foo), &x); f(5); f = boost::bind(&X::foo, &x, _1); f(5); }

boost::function对象还有一些成员函数,如contains、clear、empty等,也是一些比较有用的函数,功能很简单,这里就不多介绍了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是C++中的boost::function库简介的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言