Because destructor cleans up in the reverse order.
Item 12: Prefer Initialization to Assignment in Constructors
C++: Dynamic Array
We can dynamically allocate arrays of primitive types using new as well
C++ Weirdness
This calls the copy constructor
C++: Required Class Operations
Related to
C++ requires that all classes must provide certain operations
If you donât provide them, the compiler will make them up by following some simple rules. This can lead to problems
http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/lectures/cs11-cpp-lec2.pdf