In programming,
operator overloading—less commonly known as operator
ad hoc polymorphism—is a specific case of
polymorphism, where different
operators have different implementations depending on their arguments. Operator overloading is generally defined by the language, the programmer, or both.