#include <iostream>
#include <memory>
using namespace std;
int main()
{
auto p = make_unique<int>(5) ;
auto p1 = make_unique<int>() ;
p1 = move(p) ;
cout << *(p1) ;
// cout << *(p) ;
auto p_t = make_shared<int> (6) ;
auto p2 = p_t ;
auto p3 = p2 ;
auto p4 = p_t ;
cout << endl ;
cout << p_t.use_count() ;
cout << p2.use_count() ;
cout << p3.use_count() ;
cout << p4.use_count() ;
cout << endl ;
p2.reset();
cout << p_t.use_count() ;
cout << p2.use_count() ;
cout << p3.use_count() ;
cout << p4.use_count() ;
cout << endl ;
return 0;
}
When using unique_ptr , only one variate can be used this point address , so when cout p ,it will error . use_count can show how many times the point has used , function rest can relase the smart point .