template<classY>explicitshared_ptr( weak_ptr<Y>const& r ): pn( r.pn )//may throw{boost::detail::sp_assert_convertible< Y, T >();//it is now safe to copy r.px, as pn(r.pn) did not throwpx =r.px; } template<classY>shared_ptr( weak_ptr<Y>const&r, boost::detail::sp_no...
std::unique_ptr是C++11中新定义的智能指针,用于取代auto_ptr。unique_ptr不仅可以代理new创建的单个对象,也可以代理new[]创建的数组对象,就是说它结合了scoped_ptr和scoped_array两者的能力。 unique_ptr的基本能力跟scoped_ptr一样,同样可以在作用域内管理指针,也不允许拷贝和赋值。 unique_ptr类摘要: template <...
boost::weak_ptr 主要特点weak_ptr 被设计为与 shared_ptr 共同工作,可以从一个 shared_ptr 或者另一个 weak_ptr 对象构造,获得资源的观测权。但是 weak_ptr 没有共享资源,它的构造不会引起指针引用计数的增加,同时,在析构的时候也不回引起引用计数的减少。具体用法shared_ptr有个致命缺陷,循环引用不能够自动回...
在上面我们看到 boost::scoped_ptr 独享所有权,不允许赋值、拷贝,boost::shared_ptr 是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数。boost::shared_ptr 也是用于管理单个堆内存对象的。 我们还是从代码开始分析: void TestSharedPtr(boost::shared_ptr<Simple> memory) { // 注意:无需使用 r...
Boost源代码学习---shared_ptr.hpp,最近观看Boost库源代码。Boost功能强大的库,但它的许多源代码,十一细读太费时间,毕竟,还有其他东西要学。所以我决定脱脂感兴趣的章节,他们的设计思路和难以理解的地方记录。shared_ptr是Boost里面最有价值的的智能指针。它封装了一
智能指针 boost::shared_ptr 基本上类似于 boost::scoped_ptr。 关键不同之处在于 boost::shared_ptr 不一定要独占一个对象。 它可以和其他 boost::shared_ptr 类型的智能指针共享所有权。 boost::shared_ptr 内置引用计数,引用指针计数器记录有多少个引用指针指向同一个对象。智能指针赋值拷贝的同时,引用计数也...
Boost库中shared_ptr(上),1、共享性智能指针(shared_ptr) 引用计数型指针 shared_ptr是一个最像指针的“智能指针”,是boost.smart_ptr库中最有价值,最重要,也是最有用的。 shared_ptr实现的是引用技术型的智能指针,可以被拷贝和赋值,在任意地方共享它
template<typenameF,typenameG> locked_ptr(boost::shared_ptr<T> pointer, F lock, G unlock): boost::shared_ptr<T>(pointer.get(), unlock), value(pointer) { lock(); }; 开发者ID:lessc0de,项目名称:Clarus,代码行数:6,代码来源:locker.hpp ...
typedef boost::shared_ptr<boost::asio::ip::tcp::socket> socket_ptr; public: Server(boost::asio::io_service& _ios) : ios_(_ios), acceptor_(_ios, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 13695)) {
scoped_array 轻巧方便,没有给程序增加额外负担,但是 scoped_array 功能有限,不能动态增长,也没有迭代器支持,不能搭配 STL 算法,仅有一个纯粹的“裸”数组接口。在需要动态数组的情况下我们应该使用 std::vector 。例如:boost::shared_ptr 主要特点 boost.smart_ptr 库中最有价值,最重要的组成部分。支持...