DocAda(tm) is a productivity tool of KSCE

Prev | Up | ____ | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

6.6 Overloading of Operators

An operator is a function whose designator is an operator_symbol. Operators, like other functions, may be overloaded.

Name Resolution Rules

Each use of a unary or binary operator is equivalent to a function_call with function_prefix being the corresponding operator_symbol, and with (respectively) one or two positional actual parameters being the operand(s) of the operator (in order).

Legality Rules

The subprogram_specification of a unary or binary operator shall have one or two parameters, respectively. A generic function instantiation whose designator is an operator_symbol is only allowed if the specification of the generic function has the corresponding number of parameters.

Default_expressions are not allowed for the parameters of an operator (whether the operator is declared with an explicit subprogram_specification or by a generic_instantiation).

An explicit declaration of "/=" shall not have a result type of the predefined type Boolean.

Static Semantics

A declaration of "=" whose result type is Boolean implicitly declares a declaration of "/=" that gives the complementary result.

Examples

Examples of user-defined operators:

   
       function "+" (Left, Right : Matrix) return Matrix;
       function "+" (Left, Right : Vector) return Vector;

       --  assuming that A, B, and C are of the type Vector
       --  the following two statements are equivalent:

       A := B + C;
       A := "+"(B, C);

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | ____ | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com