Guajara in other languages: Spanish, Deutsch, French, Italian ...



Operator overloading

In computer programming, operator overloading (less commonly known as ad-hoc polymorphism) is a specific case of polymorphism in which some or all of operators like +, = or == are treated as polymorphic functions and as such have different behaviours depending on the types of its arguments. Operators need not always be symbols.

Operator overloading is usually only a syntactic sugar, and it can be easily emulated by function calls:

with operator overloading

a + b × c
without operator overloading
our_new_type_add (a, our_new_type_multiply (b,c))

Only in case when operators can be called implicitly they are of some use other than aesthetics. This is the case with Ruby operator to_s, which returns a string representation of an object and with operators in PostgreSQL, where mathematical transformations can be defined on operators and PostgreSQL may use many optimalizations to expressions that use them.

Criticism

Operator overloading has been criticised because it allows programmers to give operators completely different functionality depending on the types of their operands.
C++'s usage of the "<<" operator is a particularly bad example: The expression
a << 1
will return two times the value of a if a is an integer variable, but if a is an output stream instead this will write "1" into it.

Catalog

Languages that support operator overloading and declaring new operators: PostgreSQL version of SQL, Ruby, Haskell

Languages that support operator overloading: Ada, C++, C#, D, Python, Ruby

Languages that don't support operator overloading: C, Pascal, Delphi, Java, Visual Basic, Perl





Wikipedia - All text is available under the terms of the GNU Free Documentation License.

Tagoror dot com  -  Legal Information  -  Contact us