The purpose of declaring a _pure virtual function_
is to have derived classes inherit a function interface only
The purpose of declaring a simple _virtual function_
is to have derived classes inherit a function interface as well as a default implementation.
The purpose of declaring a _nonvirtual function_
is to have derived classes inherit a function interface as well as a mandatory implementation.