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.