Rule of Three
If a class requires one of the following, it is likely it needs all 3:
Rule of Five
If a class follows the rules of three, move operations are defined as deleted
Copy Costructor
Simple, copies data, doesn’t steal, doesn’t change the object from which is copying from (that why it is const).

Move Costructor
Copysemantics has high costs of overhead, or is not wanted.
Move semantics provides a solution.
Move constructor is invoked: A(A&& other);
Move assignement: A& operator=(A&& other)

Smart pointers
include <memory></memory>
