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.