Coding Hints to Follow!
Minimize operations that return pointers to new heap
objects
Doing so would require the caller to (1) capture the returned
pointer and (2) eventually deallocate the memory
Never return a reference to a local stack object
The object is gone when the function exits
Never return a reference to a newly allocated heap
object
Deleting the memory is not intuitive
Therefore, only return a reference to an object that
exists prior to the function call