Пространства имён
Варианты
Действия

std::shared_ptr::operator=

Материал из cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
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 функция-элемент)[править]
close