构造 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
删除器的类型。A
分配算符的类型。dtor
删除器ator
分配器。sp
复制的智能的指针。wp
弱指针。ap
自动复制的指针。
备注
构造函数的对象资源。操作数序列中的每个构造。 shared_ptr(const weak_ptr<Other>& wp) 类型的构造函数引发异常 bad_weak_ptr 类 对象,则 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);
}
要求
页眉: <内存>
命名空间: std