std::shared_ptr<T>::operator=
来自 cppreference.com
< cpp | memory | shared ptr
shared_ptr& operator=( const shared_ptr& r ) noexcept; |
(1) | |
template< class Y > shared_ptr& operator=( const shared_ptr<Y>& r ) noexcept; |
(2) | |
shared_ptr& operator=( shared_ptr&& r ) noexcept; |
(3) | |
template< class Y > shared_ptr& operator=( shared_ptr<Y>&& r ) noexcept; |
(4) | |
template< class Y > shared_ptr& operator=( std::auto_ptr<Y>&& r ); |
(5) | (C++11 中已弃用) (C++17 中已移除) |
template< class Y, class Deleter > shared_ptr& operator=( std::unique_ptr<Y, Deleter>&& r ); |
(6) | |
将托管对象替换为 r 所托管的对象。
如果 *this 已经拥有一个对象,并且它是最后一个拥有该对象的 shared_ptr
,而 r 与 *this 不相同,则该对象将通过其拥有的删除器销毁。
1,2) 共享 r 所托管的对象的所有权。如果 r 不管理任何对象,则 *this 也不管理任何对象。等效于 shared_ptr<T>(r).swap(*this).
3,4) 将一个
shared_ptr
从 r 移动赋值给它。赋值后,*this 包含 r 之前的状态的副本,而 r 则为空。等同于 shared_ptr<T>(std::move(r)).swap(*this).5) 将 r 管理的对象的所有权转移到 *this。如果 r 不管理任何对象,那么 *this 也不管理任何对象。赋值后,*this 包含之前由 r 持有的指针,并且 use_count() == 1;此外,r 也是空的。等同于 shared_ptr<T>(r).swap(*this).
6) 将 r 管理的对象的所有权转移到 *this。与 r 关联的删除器被存储起来,用于将来删除被管理的对象。调用后,r 不再管理任何对象。等同于 shared_ptr<T>(std::move(r)).swap(*this).
内容 |
[编辑] 参数
r | - | 另一个智能指针,用于共享所有权或获取所有权 |
[编辑] 返回值
*this
[编辑] 备注
实现可能在不创建临时 shared_ptr
对象的情况下满足要求。
[编辑] 异常
5,6) 可能抛出实现定义的异常。
[编辑] 示例
本节内容不完整 原因:没有示例 |
[编辑] 参见
替换被管理的对象 (公有成员函数) |