#include <iostream>
#include <memory>
int main()
{
auto_ptr<int> p(new int(9));
auto_ptr<int> ap = p;
//cout<<*p<<endl;//错误:p权限已转交无法访问到了原先指向的内存区域中的数据
unique_ptr<int> utemp(new int(9));
unique_ptr<int> up;
//up = utemp; //错误!同一块内存只能用一个指针指向
shared_ptr<int> stemp(new int(9));
shared_ptr<int> sp;
sp = stemp;
sp = stemp; //再次指向同一块内存引用计数不变
{
shared_ptr<int> mp = stemp;
cout<<sp.use_count()<<endl;//输出3
} //mp释放掉以后以用计数减去1
cout<<sp.use_count()<<endl;//输出2
return 1;
}