Класс unique_ptr
Хранит указатель на собственный объект. Данный объект не принадлежит никаким другим unique_ptr. Данный объект удаляется при удалении unique_ptr.
template< class Type, class Del = default_delete<Type> >
class unique_ptr {
public:
unique_ptr( );
unique_ptr( nullptr_t Nptr );
explicit unique_ptr( pointer Ptr );
unique_ptr( pointer Ptr,
typename conditional<is_reference<Del>::value,
Del,
typename add_reference<const Del>::type>::type Deleter);
unique_ptr (pointer Ptr,
typename remove_reference<Del>::type&& Deleter);
unique_ptr (unique_ptr&& Right);
template<class Type2, Class Del2> unique_ptr( unique_ptr<Type2, Del2>&& Right );
unique_ptr( const unique_ptr& Right) = delete;
unique_ptr& operator=(const unique_ptr& Right ) = delete;
};
Параметры
Right
Объект unique_ptr.Nptr
Интерфейс rvalue типа std::nullptr_t.Ptr
Объект pointer.Deleter
Функция deleter, которая привязана к unique_ptr.
Исключения
unique_ptr не генерирует исключения.
Заметки
Класс unique_ptr заменяет значение auto_ptr и может использоваться в качестве элемента контейнеров STL.
Используйте вспомогательную функцию make_unique для создания новых экземпляров unique_ptr.
unique_ptr — единственное средство управления ресурсом. Каждый объект unique_ptr сохраняет указатель на объект, которым обладает, или нулевой указатель. Обладать ресурсом может только один объект unique_ptr; при удалении объекта unique_ptr, обладающего тем или иным ресурсом, данный ресурс освобождается. Объект unique_ptr можно перемещать, но нельзя копировать; дополнительные сведения см. в разделе Декларатор ссылки Rvalue: &&.
Ресурс освобождается путем обращения к хранимому объекту deleter типа Del, которому известны принципы выделения ресурсов для конкретного объекта unique_ptr. Значение по умолчанию deleter default_delete<Type> подразумевает, что ресурс, на который указывает _Ptr, выделяется при помощи new и может освобождаться путем обращения к delete _Ptr. (Частичная специализация **unique_ptr<Type[]>**управляет объектами массива, выделенными при помощи new[], и обладает объектом deleter default_delete<Type[]> по умолчанию для обращения к функции delete[] _Ptr.)
Сохраненный указатель на принадлежащий ресурс, stored_ptr относится к типу pointer. Он имеет значение Del::pointer, если определен, и значение Type * , если не определен. Сохраненный объект deleter stored_deleter не занимает пространство в объекте, если deleter не сохраняет данные о состоянии. Обратите внимание, что Del может быть ссылочным типом.
Члены
Конструкторы
Для unique_ptr предусмотрено семь конструкторов. |
Определения типов
Синоним параметра шаблона Del. |
|
Синоним для параметра шаблона Type. |
|
Синоним для Del::pointer, если определен; в противном случае — значение Type *. |
Функции-члены
Возвращает stored_ptr. |
|
Возвращает ссылку на stored_deleter. |
|
сохраняет pointer() в stored_ptr и возвращает его предыдущее содержимое. |
|
Высвобождает текущий занятый ресурс и принимает новый ресурс. |
|
Выполняет обмен ресурса и deleter с указанным значением unique_ptr. |
Операторы
operator bool |
Оператор возвращает значение типа, которое можно преобразовать в значение bool. Результат преобразования в bool — значение true, если get() != pointer(); в противном случае — значение false. |
operator-> |
Функция-член возвращает значение stored_ptr. |
operator* |
Функция-член возвращает значение*stored_ptr. |
Присваивает значение unique_ptr (или pointer-type) текущему unique_ptr. |
Требования
Заголовок: <memory>
Пространство имен: std