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.