unique_ptr Class
Sahip olunan bir nesneye bir işaretçi depolar. Tarafından başka bir nesnenin sahibi unique_ptr. Nesne yok, unique_ptr yok edilir.
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
};
Parametreler
_Right
unique_ptr_Nptr
An rvalue of type std::nullptr_t._Ptr
pointer_Deleter
A deleter bağlı olduğu işlevi bir unique_ptr.
Özel Durumlar
Hiçbir özel durum tarafından oluşturulan unique_ptr.
Notlar
unique_ptr Sınıf yerini alır auto_ptrve stl kapsayıcılar bir öğesi olarak kullanılabilir.
unique_ptrbir kaynağı benzersiz olarak yönetir. Her unique_ptr Nesne sahibi veya bir null işaretçi depolar nesnesine bir işaretçi depolar. Bir kaynağın en fazla bir sahip olabileceği unique_ptr nesne; zaman bir unique_ptr belirli bir kaynağa sahip olan nesne bozulur, kaynağın serbest bırakılır. A unique_ptr nesne taşındı, ancak kopyalanmaz; Daha fazla bilgi için bkz: Rvalue başvuru Bildiricisi: & &.
Kaynak bir saklı çağırarak serbest deleter nesne türü Del , belirli bir için kaynakların nasıl ayrılacağını bilir unique_ptr. Varsayılan deleterdefault_delete<Type> kaynak tarafından gösterilir olduğunu varsayar _Ptr ile ayrılan new, ve, çağırarak boşaltılabileceğini delete _Ptr. (Kısmi özelleştirme **unique_ptr<Type[]>**ile ayrılan array nesneleri yönetir new[], ve varsayılan değer olan deleterdefault_delete<Type[]>, özelleştirilmiş aramak için [delete] _Ptr.)
Sahip olunan bir kaynağa saklı işaretçi stored_ptr türü pointer. Bu Del::pointer tanımlı, ve Type * değilse. Saklı deleter nesne stored_deleter , hiçbir nesne boşluğunda kapladığı deleter durumsuz olduğundan. Dikkat edin Del bir baþvuru türü olabilir.
Üyeler
Oluşturucular
Yedi oluşturucuları vardır unique_ptr. |
Tür tanımları
Şablon parametresi için bir eş anlamlı Del. |
|
Şablon parametresi eşanlamlısıType. |
|
Eşanlamlısı Del::pointer tanımlanmış, aksi halde, Type *. |
Üye işlevleri
Bir stored_ptr döndürür. |
|
Bir başvuru döndürür stored_deleter. |
|
saklayan pointer() , stored_ptr ve önceki içeriğini döndürür. |
|
Şu anda sahip olduğu kaynak serbest bırakır ve yeni bir kaynak kabul eder. |
|
Kaynak değişimi yapar ve deleter ile sağlanan unique_ptr. |
İşleçler
operator bool |
İşleç için dönüştürülebilir bir türünde bir değer döndürür bool. Dönüştürme sonucu bool olan true , get() != pointer(), aksi takdirde false. |
operator-> |
Üye işlevini verirstored_ptr. |
operator* |
Üye işlevi döndürür *stored_ptr. |
Değerini atar bir unique_ptr (ya da bir pointer-type) geçerli unique_ptr. |
Gereksinimler
Başlık: <memory>
Ad alanı: std