shared_ptr::shared_ptr
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;
매개 변수
Other
형식 인수가 포인터에 의해 제어입니다.ptr
복사 하는 포인터입니다.D
Deleter의 유형을 지정 합니다.A
할당자의 형식입니다.dtor
Deleter입니다.ator
할당자입니다.sp
복사 하려면 스마트 포인터입니다.wp
약한 포인터입니다.ap
복사할 자동 포인터입니다.
설명
생성자는 각 피연산자 시퀀스에서 명명 된 리소스를 소유 하는 개체를 생성 합니다.생성자는 shared_ptr(const weak_ptr<Other>& wp) 형식의 예외 개체를 throw bad_weak_ptr Class 경우 wp.expired().
예제
// 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);
}
요구 사항
헤더: <memory>
네임 스페이스: std