shared_ptr::shared_ptr
Yapıları bir shared_ptr.
shared_ptr();
shared_ptr(nullptr_t);
shared_ptr(const shared_ptr& sp);
shared_ptr(shared_ptr&& sp);
template<class Other>
explicit shared_ptr(Other *ptr);
template<class Other, class D>
shared_ptr(Other *ptr, D dtor);
template<class D>
shared_ptr(nullptr_t ptr, D dtor);
template<class Other, class D, class A>
shared_ptr(Other *ptr, D dtor, A alloc);
template<class D, class A>
shared_ptr(nullptr_t ptr, D dtor, A alloc);
template<class Other>
shared_ptr(const shared_ptr<Other>& sp);
template<class Other>
shared_ptr(const weak_ptr<Other>& wp);
template<class &>
shared_ptr(std::auto_ptr<Other>& ap);
template<class &>
shared_ptr(std::auto_ptr<Other>&& ap);
template<class Other, class D>
shared_ptr(unique_ptr<Other, D>&& up);
template<class Other>
shared_ptr(const shared_ptr<Other>& sp, Ty *ptr);
template<class Other, class D>
shared_ptr(const unique_ptr<Other, D>& up) = delete;
Parametreler
Other
Bağımsız değişken işaretçi tarafından denetlenen türü.ptr
Kopyalamak için işaretçi.D
Deleter türü.A
Ayırıcı yazın.dtor
Deleter.ator
Ayırıcısı.sp
Kopyalamak için akıllı işaretçi.wp
Zayıf işaretçi.ap
Kopyalamak için otomatik işaretçi.
Notlar
Her Kurucular tarafından işlenen sırası adlı kaynağın sahibi olan bir nesne oluşturun. Yapıcı shared_ptr(const weak_ptr<Other>& wp) türünde bir özel durum nesnesi oluşturduğunda bad_weak_ptr Class , wp.expired().
Örnek
// std_tr1__memory__shared_ptr_construct.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
struct deleter
{
void operator()(int *p)
{
delete p;
}
};
int main()
{
std::shared_ptr<int> sp0;
std::cout << "(bool)sp0 == " << std::boolalpha
<< (bool)sp0 << std::endl;
std::shared_ptr<int> sp1(new int(5));
std::cout << "*sp1 == " << *sp1 << std::endl;
std::shared_ptr<int> sp2(new int(10), deleter());
std::cout << "*sp2 == " << *sp2 << std::endl;
std::shared_ptr<int> sp3(sp2);
std::cout << "*sp3 == " << *sp3 << std::endl;
std::weak_ptr<int> wp(sp3);
std::shared_ptr<int> sp4(wp);
std::cout << "*sp4 == " << *sp4 << std::endl;
std::auto_ptr<int> ap(new int(15));
std::shared_ptr<int> sp5(ap);
std::cout << "*sp5 == " << *sp5 << std::endl;
return (0);
}
Gereksinimler
Başlık: <memory>
Namespace: std