Jon*_*Jon 8 c++ boost smart-pointers shared-ptr boost-smart-ptr
boost::intrusive_ptr要求intrusive_ptr_add_ref和intrusive_ptr_release定义.为什么不提供基类来执行此操作?这里有一个例子:http://lists.boost.org/Archives/boost/2004/06/66957.php,但海报上写着"我不一定认为这是一个好主意".为什么不?
更新:我认为这个类可能被多重继承滥用的事实是不够的.从具有自己的引用计数的多个基类派生的任何类都将具有相同的问题.这些refcounts是否通过基类实现是没有区别的.
我认为多线程没有任何问题; boost::shared_ptr提供原子引用计数,这个类也可以.
小智 4
Boost 为此提供了便利。它可以配置为线程安全或线程不安全的引用计数:
#include <boost/intrusive_ptr.hpp>
#include <boost/smart_ptr/intrusive_ref_counter.hpp>
class CMyClass
: public boost::intrusive_ref_counter<
CMyClass,
boost::thread_unsafe_counter>
...
boost::intrusive_ptr<CMyClass> myPtr;
Run Code Online (Sandbox Code Playgroud)
http://www.boost.org/doc/libs/1_62_0/libs/smart_ptr/intrusive_ref_counter.html