std::shared_ptr<T>:: operator=
From ru.cppreference.net
<
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)
Может генерировать исключения, определяемые реализацией.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
заменяет управляемый объект
(публичная функция-член) |