Function Overloading is an actively used design pattern. The 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. This is a type of polymorphism.

?Years Old

Languages without Function Overloading include javascript

Languages with Function Overloading include cpp, pascal

Example from cpp:

// volume of a cube
int volume(const int s) {
 return s*s*s;
// volume of a cylinder
double volume(const double r, const int h) {
  return 3.1415926*r*r*static_cast<double>(h);

Example from pascal:

program Adhoc;

function Add(x, y : Integer) : Integer;
    Add := x + y

function Add(s, t : String) : String;
    Add := Concat(s, t)

    Writeln(Add(1, 2));                   (* Prints "3"             *)
    Writeln(Add('Hello, ', 'World!'));    (* Prints "Hello, World!" *)

Last updated June 22nd, 2020

Edit Function Overloading on GitHub