"Big Three" Functions
When a new class uses pointers to allocate memory out of the dynamic storage pool and we use the default C++ behavior for copying, assignment, and no-destruction; some bad things can happen---namely: aliasing and memory leaks.
For this reason, whenever you need to manage dynamic storage, you probably also need:
A custom-defined copy constructor,
A custom-defined assignment operator, and
A custom-defined destructor.
The following stringMutator code provides an example: simple_class_w_big_three.cpp