Boost库之function

来源:互联网 发布:巨人网络征途视频 编辑:程序博客网 时间:2024/06/04 08:03

      Boost.Function库包含了一个类族的函数对象的包装。它的概念很像广义上的回调函数。其有着和函数指针相同的特性但是又包含了一个调用的接口。一个函数指针能够在能以地方被调用或者作为一个回调函数。boost.function能够代替函数指针并提供更大的灵活性。

Boost.Function其语法如下:boost::function<float(intx, int y)>f

如果Function未赋予一个函数或者不合法的函数而被调用,则会抛出一个boost::bad_function_call异常。

#include "stdafx.h"#include <iostream>#include <boost/function.hpp>#include<boost/bind.hpp>using namespace std;//printint print(int a) { cout << a <<endl; return a; } class X{public:X(){};int print(int a) { cout << a <<endl; return a; } };typedef boost::function<int(int a)> FuncPrint;int main(int argc, char* argv[]) { //外部函数boost::function<int(int)>f = print;f(5);//类成员函数,通过bind绑定X x;FuncPrint f2 = bind(&X::print,&x,_1);f2(10);//类成员函数,通过bind绑定,直接调用函数bind(&X::print,&x,_1)(15);//函数赋值不合法时,抛出一个boost::bad_function_call异常try{boost::function<void(char *)> f3;f3("");}catch (boost::bad_function_call &ex){cout<<ex.what()<<endl;}return 0; }



0 0