⑤、shared_array 使用shared_array来指向使用new[]开辟的数组,它同样使用引用计数机制。 ⑥、weak_ptr 我们一般使用一个shared_ptr或weak_ptr来初始化weak_ptr,当使用一个shared_ptr对象来构造weak_ptr的时候不会引起shared_ptr引用计数的增加,即weak_ptr不能控制对象的生命期。 weak_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_ptr<X> p2 = p1;//用p1对象初始化p2对象,调用拷贝构造函数,相当于共享一个对象 boost::shared_ptr<X> p3; p3 = p1;//等号运算符 cout << p2.use_count() << endl;//其值等于p1.use_count() p1.reset();//表示置空,显式的将引用计数-1,也可以不用,等程序结束的时候会进行...
和本章中所有的智能指针一样,boost::shared_array 也同样提供了 get() 和 reset() 方法。另外还重载了 operator bool()。 03、弱指针 >>>到目前为止介绍的各种智能指针都能在不同的场合下独立使用。相反,弱指针只有在配合共享指针一起使用时才有意义。弱指针 boost::weak_ptr 的定义在 boost/weak_ptr.hpp...
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 基本...
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 ...
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<<"该指针无效...
[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参数解析:...
(); return 0; } 该程序的输出结果如下: The Sample now has 1 references The Sample now has 2 references After Reset sp1. The Sample now has 1 references destroying implementation After Reset sp2. 可以看到,boost::shared_ptr指针sp1和sp2同时拥有了implementation对象的访问权限,且当sp1和sp2都释放对...
包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost:: intrusive_ptr。你可能会想,如此多的智能指针就为了解决new、delete匹配问题,真的有必要吗?看完这篇文章后,我想你心里自然会有答案。