weak_ptr 类
环绕弱链接指针。
template<class Ty> class weak_ptr {
public:
typedef Ty element_type;
weak_ptr();
weak_ptr(const weak_ptr&);
template<class Other>
weak_ptr(const weak_ptr<Other>&);
template<class Other>
weak_ptr(const shared_ptr<Other>&);
weak_ptr& operator=(const weak_ptr&);
template<class Other>
weak_ptr& operator=(const weak_ptr<Other>&);
template<class Other>
weak_ptr& operator=(shared_ptr<Other>&);
void swap(weak_ptr&);
void reset();
long use_count() const;
bool expired() const;
shared_ptr<Ty> lock() const;
};
参数
- Ty
弱指针控制的类型。
备注
模板类描述指向资源由一个或多个 shared_ptr 类 对象管理的对象。 weak_ptr 对象对资源的该点不影响资源的引用计数。 因此,销毁时,管理该资源的最后一个 shared_ptr 对象被释放资源,因此,即使包含点 weak_ptr 对象对该资源。 这对于不在数据结构的周期非常重要。
对资源的 weak_ptr 目标将点从拥有,则该资源的构造 shared_ptr 对象时,则从指向该资源的 weak_ptr 对象的构造,或者,如果该资源分配给它。weak_ptr::operator=。 weak_ptr 对象不提供给指向资源的直接访问。 代码需要使用资源通过拥有该资源的 shared_ptr 对象来实现,通过调用成员函数。weak_ptr::lock 过期 weak_ptr 对象,则点时的资源已经释放,因为所有的 shared_ptr 对象添加自己的资源销毁。 对过期的 weak_ptr 对象的 lock 的空的情况下创建对象。
空 weak_ptr 对象不指向任何资源并没有控制块。 其成员函数 lock 返回空 shared_ptr 对象。
shared_ptr 对象时,控件的两个或更多个资源存储相互引用 shared_ptr 对象,因此如果发生循环。 例如,具有三个元素的循环链接列表具有头节点 N0;该节点包含的节点下的 shared_ptr 对象,N1;该节点包含的节点下的 shared_ptr 对象,N2;该节点,因此,持有自己头节点的 shared_ptr 对象中,N0,请关闭时间。 在这种情况下,引用计数不会变成零,并且,在循环的节点不会被释放。 若要消除循环,最后一个 N2 节点应保存指向 N0 代替 shared_ptr 对象的 weak_ptr 对象。 因为 weak_ptr 对象拥有 N0 不影响 N0 引用计数,并且,当销毁,到头节点的程序的最后一个引用也将会在列表的节点。
成员
构造函数
构造 weak_ptr。 |
方法
元素的类型。 |
|
测试,则公开过期。 |
|
获取资源的独占所有权。 |
|
返回 true,则此 weak_ptr。(大于) 或提供的指针前顺序。 |
|
释放的资源。 |
|
交换两个 weak_ptr 对象。 |
|
计数指定的 shared_ptr 对象的数目。 |
运算符
replaces 的资源。 |
要求
页眉: <内存>
命名空间: std