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

std::shared_ptr::reset

Материал из cppreference.com
< cpp‎ | memory‎ | shared ptr

 
 
 
 
 
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. Дополнительно Deleter d могут быть поставлены, который в дальнейшем используется для уничтожения нового объекта, когда не shared_ptr объектов его владельцем. По умолчанию, delete выражение используется в качестве Deleter. Правильное выражение 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.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если *this уже владеет объектом, и это последнее shared_ptr она принадлежит, объект будет уничтожен через принадлежащие Deleter.
Оригинал:
If *this already owns an object and it is the last shared_ptr owning it, the object is destroyed through the owned deleter.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если объект, на который указывает ptr уже находится в собственности, функции приводит к неопределенному поведению.
Оригинал:
If the object pointed to by ptr is already owned, the function results in undefined behavior.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
Релизы собственности на управляемый объект, если таковой имеется. После вызова *this управляет ни один объект.
Оригинал:
Releases the ownership of the managed object, if any. After the call, *this manages no object.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
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:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Использует удалить выражение, как 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);.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3)
Использование указанного d Deleter как 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);.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
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);.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

ptr -
Указатель на объект приобрести в собственность
Оригинал:
pointer to an object to acquire ownership of
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
d -
Deleter сохранить для удаления объекта
Оригинал:
deleter to store for deletion of the object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
alloc -
распределителя использовать для внутренних ассигнований
Оригинал:
allocator to use for internal allocations
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

(Нет)

[править] Исключения

1)
noexcept-спецификация:  
noexcept
  (начиная с C++11)
2-4)
Как указано в соответствующем конструкторе .
Оригинал:
As specified by the relevant constructor .
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

[править] См. также

создает новый shared_ptr
(public функция-член) [edit]