The class is called
unique_ptr because only one
unique_ptr at a time can own a dynamically allocated object. By using its overloaded assignment operator or copy constructor, a
unique_ptr can transfer ownership of the dynamic memory it manages. The last
unique_ptr object that maintains the pointer to the dynamic memory will delete the memory. This makes
unique_ptr an ideal mechanism for returning dynamically allocated memory to client code. When the
unique_ptr goes out of scope in the client code, the
unique_ptr’s destructor destroys the dynamically allocated object and deletes its memory.