您的位置:首页 > 其它

boost::function与boost::bind 的使用

2017-06-05 16:01 393 查看

0x01 为啥?

     为啥要用这个?这个用起来有什么好处?查了下资料陈硕大哥的见解:http://blog.csdn.net/solstice/article/details/3066268 

     下面也说说我的想法:每个技术点都有适合的用法,使用某项技术点,还是依据整个团队的技术成熟度、熟悉度等。

     最近在阅读haoxingeng的服务器框架ise,发现其用法,于是有学习了一把。

     我想这个场景会使用到,程序运行时动态选择执行函数和模块。动态运行时调用函数的常用做法如下:

     C的做法:函数指针、动态加载动态库。

     C++的做法:多态、继承。

0x02 特点?

     为啥boost这么做,优势是什么?

     


0x03 怎么用?使用场景?

       以ISE框架中的example中例子来做详细的解析:
       自动析构器:
       
class AutoFinalizer : boost::noncopyable
{
public:
AutoFinalizer(const Functor& f) : f_(f) {}
~AutoFinalizer() { f_(); }
private:
Functor f_;
};


调用地方:
if (iseApp().parseArguments(argc, argv))
{
AutoFinalizer finalizer(boost::bind(&IseApplication::finalize, &iseApp()));

iseApp().initialize();
iseApp().run();
}


  作用域结束,自动调用finalize函数;

   简单理解,有错请指教。

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息