Two kinds of polymorphism

C++ supports two distinctly different kinds of polymorphism.

One kind exists when functions or operators are overloaded to cause them to perform operations not inherently recognized by the compiler.

A well-known example is the ability to replace the three C functions shown in Figure 1 by three functions having the same name in C++.

Figure 1. Three C functions.
abs(), labs(), and fabs()