operator keyword | Function call syntax for operators |
operator-function-id ::= operator op-symbol | operator op-symbol < [template-arg-list] > conversion-function-id ::= operator conversion-type-id conversion-type-id ::= type-specifier-seq [conversion-declarator] conversion-declarator ::= ptr-operator [conversion-declarator] ptr-operator ::= * [cv-qualifier-seq] | & | [::] nested-name :: * [cv-qualifier-seq] |
The operator keyword converts an operator symbol into function notation. You can use the operator keyword when invoking an operator or when overloading an operator.
int x = operator+(10, 32); complex<double> c, d; c.operator+=(d); operator+=(c, d); // Same as above bigint operator*(const bigint& a, const bigint* b);
Table 12-1 lists the operator symbols (op-symbol) that can be overloaded. Alternative tokens (shown in parentheses) are interchangeable with their symbolic equivalents.
delete |
/ |
= |
%= |
<<= |
++ |
delete [ ] |
% |
< |
^= (xor_eq) |
== |
-- |
new |
^ (xor) |
> |
&= (and_eq) |
!= (not_eq) |
, |
new [ ] |
& (bitand) |
+= |
|= (or_eq) |
<= |
->* |
+ |
| (bitor) |
-= |
<< |
>= |
-> |
- |
~ (compl) |
*= |
>> |
&& (and) |
( ) |
* |
! (not) |
/= |
>>= |
|| (or) |
[ ] |
expression, identifier, template, type, Chapter 5