HasPtr class to act like a pointer, we need the copy constructor and copy-assignment operator to copy the pointer member, not the
string to which that pointer points. Our class will still need its own destructor to free the memory allocated by the constructor that takes a
string (§ 13.1.4, p. 504). In this case, though, the destructor cannot unilaterally free its associated
string. It can do so only when the last
HasPtr pointing to that
string goes away.
The easiest way to make a class act like a pointer is to use
shared_ptrs to manage the resources in the class. Copying (or assigning) a ...