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