⑤、shared_array 使用shared_array来指向使用new[]开辟的数组,它同样使用引用计数机制。 ⑥、weak_ptr 我们一般使用一个shared_ptr或weak_ptr来初始化weak_ptr,当使用一个shared_ptr对象来构造weak_ptr的时候不会引起shared_ptr引用计数的增加,即weak_ptr不能控制对象的生命期。 weak_ptr
ptr_t->xxx(),等同于p_t->xxx() ptr_t.reset(),delete内部持有的p_t。假设T支持直接赋值,*ptr_t = xxx。再次强调,scoped_ptr不能做拷贝、赋值等转移指针管理权限的事情。因此,class内置域为scoped_ptr是不允许的,除非class也禁止拷贝、赋值。boost::scope_array 主要特点 同 boost::scoped_ptr 基本...
shared_ptr(std::auto_ptr < Y > & r),从一个auto_ptr获得指针的管理权,引用计数置为1,同时auto_ptr失去指针的管理权。 “=” 赋值运算符,对于对象shared_ptr和auto_ptr,结果同构造函数。 当然,还有特殊的shared_ptr(Y * p,D d),第二个参数指定了析构时的一些特性,之后再做介绍。 reset() 对于不...
和本章中所有的智能指针一样,boost::shared_array 也同样提供了 get() 和 reset() 方法。 另外还重载了 operator bool()。 2.7. 弱指针 到目前为止介绍的各种智能指针都能在不同的场合下独立使用。 相反,弱指针只有在配合共享指针一...
和本章中所有的智能指针一样,boost::shared_array 也同样提供了 get() 和 reset() 方法。另外还重载了 operator bool()。 03、弱指针 >>>到目前为止介绍的各种智能指针都能在不同的场合下独立使用。相反,弱指针只有在配合共享指针一起使用时才有意义。弱指针 boost::weak_ptr 的定义在 boost/weak_ptr.hpp...
shared_ptr<int> spp1 = wp.lock();//获得一个shared_ptr*spp1 =100; cout<<"该指针的引用计数:"<<wp.use_count()<<endl; } cout<<"该指针的引用计数:"<<wp.use_count()<<endl; wp.reset();//if(!wp) cout<<"该指针无效"<<endl; 没有重载!操作符if(wp.expired()) cout<<"该指针无效...
explicit reset(). scoped_ptr is a simple solution for simple needs; use shared_ptr or std::auto_ptr if your needs are more complex. 从上面的话可以得知当调用reset() 函数时也能够释放堆对象,如何实现的呢? 代码语言:c++ AI代码解释 void reset(T *p = 0) // never throws ...
包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost:: intrusive_ptr。你可能会想,如此多的智能指针就为了解决new、delete匹配问题,真的有必要吗?看完这篇文章后,我想你心里自然会有答案。
[10]b.reset(pos):把b中在pos处的二进制位置为0。[11]b.flip():把b中所有二进制位逐位取反。[12]b.flip(pos):把b中在pos处的二进制位取反。[13]b.to_ulong:把b中同样的二进制位返回一个unsigned long值。[14]os << b:把b中的位集输出到os流。 25.GCC参数解析:...
boost::shared_ptr是可以共享所有权的智能指针,shared_ptr与scoped_ptr一样包装了new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针,可以被自由地拷贝和赋值,boost::shared_ptr的管理机制其实并不复杂,就是对所管理的对象进行了引用计数,当新增一个boost::shared_ptr对该对象进行管理时,就将该对象...