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.
Example
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.
Table 12-1. Operator symbols that can be overloaded
delete
|
/
|
=
|
%=
|
<<=
|
++
|
delete [ ]
|
%
|
<
|
^= (xor_eq)
|
==
|
--
|
new
|
^ (xor)
|
>
|
&= (and_eq)
|
!= (not_eq)
|
,
|
new [ ]
|
& (bitand)
|
+=
|
|= (or_eq)
|
<=
|
->*
|
+
|
| (bitor)
|
-=
|
<<
|
>=
|
->
|
-
|
~ (compl)
|
*=
|
>>
|
&& (and)
|
( )
|
*
|
! (not)
|
/=
|
>>=
|
|| (or)
|
[ ]
|
See Also
expression, identifier,
template, type, Chapter 5
|