Binary Operators

Table 12.5 shows a list of operators that can be overloaded.

Table 12.5 Redefinable Binary Operators

Operator Name

, Comma
!= Inequality
% Modulus
%= Modulus/assignment
& Bitwise AND
&& Logical AND
&= Bitwise AND/assignment
* Multiplication

Table 12.5 (continued)

Operator Name

*= Multiplication/assignment
+ Addition
+= Addition/assignment
Subtraction
–= Subtraction/assignment
–> Member selection
–>* Pointer-to-member selection
/ Division
/= Division/assignment
< Less than
<< Left shift
<<= Left shift/assignment
<= Less than or equal to
= Assignment
== Equality
> Greater than
>= Greater than or equal to
>> Right shift
>>= Right shift/assignment
  Exclusive OR
^= Exclusive OR/assignment
| Bitwise inclusive OR
|= Bitwise inclusive OR/assignment
|| Logical OR

To declare a binary operator function as a nonstatic member, it must be declared in the form:

ret-typeoperatorop( arg)

where ret-type is the return type, and op is one of the operators listed in Table 12.5, and arg is an argument of any type.

To declare a binary operator function as a global function, it must be declared in the form:

ret-type operatorop( arg1, arg2 )

where ret-type and op are as described for member operator functions, and arg1 and arg2 are arguments. At least one of the arguments must be of class type.

Note:

There is no restriction on the return types of the binary operators; however, most user-defined binary operators return either a class type or a reference to a class type.