Abstract Base Classes
The purpose of declaring a function to be
pure is to force the derived classes to
implement it.
A virtual function is a contract with a
derived class indicating the name, signature,
and return type for the function.
Making the virtual function pure forces the
contract to be fulfilled.