Поделиться через


unique_ptr Class

Сохраняет указатель на имеемому объекту.Объект unique_ptr принадлежит никаким другим.При удалении объекта unique_ptr уничтожается.

template<class Type, class Del = default_delete<Type> >
    class unique_ptr {

public:
        typedef Type element_type;
        typedef Del deleter_type;
        typedef T1 pointer;

        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 ();

    unique_ptr& operator= (
        unique_ptr&& _Right
    );
    template<class Type2, Class Del2>
        unique_ptr& operator= (
            unique_ptr<Type2, Del2>&& _Right
        );
    void swap (
        unique_ptr& _Right
    );
    pointer release ();
    void reset (
       pointer _Ptr = pointer()
    );

    pointer get () const;
    Type& operator* () const;
    pointer operator-> () const;
    Del& get_deleter ();
    const Del& get_deleter () const;
    explicit operator bool () const;

    unique_ptr(
        const unique_ptr& _Right
) = delete;
    unique_ptr& operator=(
        const unique_ptr& _Right
) = delete;

private:
    pointer stored_ptr;    // exposition only
    Del stored_deleter;    // exposition only
    };

Параметры

  • _Right
    Объект unique_ptr.

  • _Nptr
    Интерфейс rvalue типа std::nullptr_t.

  • _Ptr
    Объект pointer.

  • _Deleter
    Функция deleter, привязана к unique_ptr.

Исключения

Исключений unique_ptr не создаются.

Заметки

Класс unique_ptr заменяет значение auto_ptr и может использоваться в качестве элемента контейнеров STL.

unique_ptr является уникальным управляет ресурс.Каждый объект unique_ptr сохраняет указатель на объект, он имеет или сохраняет указатель.Ресурс может иметься не более чем одним объектом unique_ptr; когда объект unique_ptr, имеющий указанный ресурс разрушается, ресурс удаленного.Объект unique_ptr не может быть перемещен, но копируется; дополнительные сведения см. в разделе Декларатор ссылки Rvalue: &&.

Ресурс удаленного путем вызова, сохраненный объект deleter типа Del, известно, как ресурсы выделяются для указанного объекта unique_ptr.Значение по умолчанию - deleterdefault_delete<Type> высказывать ресурс, указанное в выборе _Ptr с new, и он может быть освобождается путем вызова метода delete _Ptr.unique_ptr<Type[]>(специализация a частично управляет объекты массивов, созданные с помощью new[], имеет значение по умолчанию deleter и default_delete<Type[]>, специализированное, чтобы вызвать удаление [] _Ptr).

Сохраненный указатель на имеемому ресурсу, stored_ptr имеет тип pointer.Значение Del::pointer, если это указано, и значение Type * в противном случае.Сохраненный объект stored_deleterdeleter не занимает нет места в объекте, если deleter является приложением с неопределенным состоянием.Обратите внимание, что Del может быть ссылочным типом.

Члены

Ee410601.collapse_all(ru-ru,VS.110).gifКонструкторы

unique_ptr::unique_ptr

7 Конструкторов для unique_ptr.

Ee410601.collapse_all(ru-ru,VS.110).gifОпределения типов

deleter_type

Синоним для параметра Del шаблона.

element_type

Синоним для параметра Type. шаблона

указатель

Если определен синоним для Del::pointer, в противном случае — значение Type *.

Ee410601.collapse_all(ru-ru,VS.110).gifФункции-члены

unique_ptr::get

Возвращает stored_ptr.

unique_ptr::get_deleter

Возвращает ссылку на stored_deleter.

unique_ptr::release

сохраняет pointer() в stored_ptr и возвращает его предыдущие содержимое.

unique_ptr::reset

Выпуски в данный момент имеемый ресурс и принимают нового ресурса.

unique_ptr::swap

Ресурс и deleter обеспечивает с заданным unique_ptr.

Ee410601.collapse_all(ru-ru,VS.110).gifОператоры

operator bool

Оператор возвращает значение типа, преобразуемым к bool.Результат преобразования в bool при trueget() != pointer(), в противном случае — значение false.

operator->

Возвращает функцию-член stored_ptr.

operator*

Returns* функции-члена stored_ptr.

unique_ptr operator=

Присваивает значение unique_ptr(или pointer-type) к текущему unique_ptr.

Требования

Заголовок: <memory>

Пространство имен: std

См. также

Ссылки

<memory>

Другие ресурсы

члены unique_ptr