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

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

   简单理解,有错请指教。

       
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值