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函数;
简单理解,有错请指教。