Team LiB   Previous Section   Next Section
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

    Team LiB   Previous Section   Next Section