书籍:

The Boost C++ Libraries

http://blog.csdn.net/sunny2038/article/details/7509792

回调 闭包

boost 库里面最值得使用的是 bind,function,shared_ptr等,这些东西运用好会让代码非常漂亮而且不用担心内存泄漏问题 2.boost库之前的公司中项目用了boost很多东西,陈硕的muduo库中也用了boost的东西,性能问题不需要担心,而且写代码会舒服很多。

在C++中,信号与槽(Signal/Slots)才是回调的完美解决方案,其实本质上是一个观察者模式,包括其它的叫法:delegate,notifier/receiver,observer,C#中的delegate也是一个观察者的实现。

http://www.boost.org/doc/

http://www.sgi.com/tech/stl/stl_index_cat.html

http://www.chinaitlab.com/c/special/sjms/Index.html

https://www.oschina.net/question/565065_66770

http://blog.csdn.net/xie1xiao1jun/article/details/8262902

C++中实现回调机制的几种方式: Callback方式 Sink方式 Delegate方式 Signal/Slots信号槽 闭包

Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法。

Sink的本质是你按照对方要求实现一个C++接口,然后把你实现的接口设置给对方,对方需要触发事件时调用该接口.

  • RAII auto_ptr shared_ptr ptr_vector
  • 智能指针smart_ptr 标准容器不能容纳auto_ptr,这是C++标准特别规定的(读者永远也不要有这种想法)。标准容器也不能容纳scoped_ptr,因为scoped_ptr不能拷贝和赋值。标准容器可以容纳原始指针,但这就丧失了容器的许多好处,因为标准容器无法自动管理类型为指针的元素,必须编写额外的大量代码来保证指针最终被正确删除,这通常很麻烦很难实现。 存储shared_ptr的容器与存储原始指针的容器功能几乎一样,但shared_ptr为程序员做了指针的管理工作,可以任意使用shared_ptr而不用担心资源泄漏。

  • lambda 能嵌入到其他表达式当中的匿名函数(闭包)

bind function lambda any

http://www.douban.com/note/499300037/ 对 Boost 的取舍也不一样。就我的个人经验而言,首先可以使用绝对无害的库,例如 noncopyable、scoped_ptr、static_assert 等,这些库的学习和使用都比较简单,容易入手。其次,有些功能自己实现起来并不困难,正好 Boost 里提供了现成的代码,那就不妨一用,比如date_time 和 circular_buffer 等。然后,在新项目中,对于消息传递和资源管理可以考虑采用更加现代的方式,例如用 function/bind 在某些情况下代替虚函数作为库的回调接口、借助shared_ptr实现线程安全的对象回调等等。这二者会影响整个程序的设计思路与风格,需要通盘考虑,如果正确使用智能指针,在现代 C++ 程序里一般不需要出现 delete 语句。最后,对某些性能不佳的库保持警惕,比如 lexical_cast。

  • open src: leveldb skynet moduo nginx libevent jsoncpp
  • 向前声明 隐藏内部类