Pointer C++

#include 
#include 
using namespace std;
class X {
public:
  X() { 
     cout << "constructing\n"; 
  }
  ~X() { 
     cout << "destructing\n"; 
  }
  void f() { 
     cout << "Inside f()\n"; 
  }
};
int main()
{
  auto_ptr p1(new X), p2;
  p2 = p1;            // transfer ownership
  p2->f();
  
  X *ptr = p2.get();  // can assign to a normal pointer
  ptr->f();
  return 0;
}