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

0x01 为啥?

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

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

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

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

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

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

0x02 特点?

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

     boost::function与boost::bind 的使用_第1张图片

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函数;

   简单理解,有错请指教。

       

你可能感兴趣的:(C++编程)