Ability to create multiple functions of
the same name with different implementations. Calls to an overloaded function
will run a specific implementation of that function appropriate to the context
of the call, allowing one function call to perform different tasks depending
on context.
— Wikipedia