std::shared_ptr::reset
来自cppreference.com
< cpp | memory | shared ptr
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
void reset(); |
(1) | (C++11 起) |
template< class Y > void reset( Y* ptr ); |
(2) | (C++11 起) |
template< class Y, class Deleter > void reset( Y* ptr, Deleter d ); |
(3) | (C++11 起) |
template< class Y, class Deleter, class Alloc > void reset( Y* ptr, Deleter d, Alloc alloc ); |
(4) | (C++11 起) |
替换被管理对象指向的对象的
ptr
。可以提供可选的删除d
,这是用来摧毁新的对象时,没有shared_ptr
对象拥有它。默认情况下,作为delete表达的删除。总是选择正确的delete表达提供的类型对应,这是实现函数模板使用一个单独的参数Y
的原因.原文:
Replaces the managed object with an object pointed to by
ptr
. Optional deleter d
can be supplied, which is later used to destroy the new object when no shared_ptr
objects own it. By default, delete expression is used as deleter. Proper delete expression corresponding to the supplied type is always selected, this is the reason why the function is implemented as template using a separate parameter Y
.如果
*this
已经拥有了一个对象,它是拥有它的最后shared_ptr
,对象被销毁通过所拥有的删除.原文:
If
*this
already owns an object and it is the last shared_ptr
owning it, the object is destroyed through the owned deleter.如果指向的对象的
ptr
已经拥有的功能导致未定义的行为.原文:
If the object pointed to by
ptr
is already owned, the function results in undefined behavior.1)
释放所有权的管理对象,如果有的话。通话结束后,*this管理对象.
原文:
Releases the ownership of the managed object, if any. After the call, *this manages no object.
2-4)
替换被管理对象指向的对象的
ptr
。 Y
必须是一个完整的类型和隐式转换为T
。此外原文:
Replaces the managed object with an object pointed to by
ptr
. Y
must be a complete type and implicitly convertible to T
. Additionally:2)
使用delete表达式的Deleter的。表达必须提供一个有效的删除,即delete ptr必须有充分的形成,具有定义良好的行为并没有抛出任何异常。有效地调用shared_ptr<T>(ptr).swap(*this);.
原文:
Uses the delete expression as the deleter. A valid delete expression must be available, i.e. delete ptr must be well formed, have well-defined behavior and not throw any exceptions. Effectively calls shared_ptr<T>(ptr).swap(*this);.
3)
使用指定的删除
d
的Deleter的。 Deleter
的类型必须是可调用的T
,即d(ptr)必须有充分的形成,具有定义良好的行为并没有抛出任何异常。 Deleter
必须CopyConstructible
。有效地调用shared_ptr<T>(ptr, d).swap(*this);.原文:
Uses the specified deleter
d
as the deleter. Deleter
must be callable for the type T
, i.e. d(ptr) must be well formed, have well-defined behavior and not throw any exceptions. Deleter
must be CopyConstructible
. Effectively calls shared_ptr<T>(ptr, d).swap(*this);.4)
相同(3),但另外使用一个副本
alloc
供内部使用的数据的分配。 Alloc
必须Allocator
。拷贝构造函数和析构函数不能抛出异常。有效地调用shared_ptr<T>(ptr, d, alloc).swap(*this);.原文:
Same as (3), but additionally uses a copy of
alloc
for allocation of data for internal use. Alloc
must be a Allocator
. The copy constructor and destructor must not throw exceptions. Effectively calls shared_ptr<T>(ptr, d, alloc).swap(*this);.目录 |
[编辑] 参数
ptr | - | 指针指向的对象的拥有权
原文: pointer to an object to acquire ownership of |
d | - | 删除器来存储删除对象
原文: deleter to store for deletion of the object |
alloc | - | 分配器用于内部分配
原文: allocator to use for internal allocations |
[编辑] 返回值
(无)
[编辑] 例外
1) 2-4)指定的有关构造
.
本章尚未完成 |
原文:
As specified by the relevant constructor
.
本章尚未完成 |
[编辑] 示例
本章尚未完成 原因:暂无示例 |
[编辑] 另请参阅
constructs new shared_ptr (公共成员函数) |