unstructured note
Rule of three: If class requires user defined copy constructor or destructor or copy assignment, it probably requires all of them. Otherwise, the class would malfunction.
Rule of five adds two more things: 1) move constructor and move assignment.
to be updated.