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