[ fromfile: operators.xml id: operatortable ]
Table 19.2. C++ Operators
Operator | Operands | Description | Example | A | Ovl |
---|---|---|---|---|---|
::
|
one | Global Scope Resolution |
:: name
|
R | N |
::
|
two | class/namespace scope resolution |
className::memberName
|
L | N |
->
|
two | Member selector via ptr |
ptr->memberName
|
L | N |
.
|
two | Member selector via obj |
obj.memberName
|
L | N |
->
|
one | Smart ptr |
obj->member
|
R | M |
[ ]
|
two | Subscript operator |
ptr[expr]
|
L | M |
( )
|
any [a] | Function call |
function(argList)
|
L | N |
( )
|
any | Value construction |
className(argList)
|
L | M |
++
|
one | Post increment |
varName++
|
R | Y |
--
|
one | Post decrement |
varName--
|
R | Y |
typeid
|
one | Type identification |
typeid(type)
or typeid(expr)
|
R | N |
dynamic_cast
|
two | runtime checked conv |
dynamic_cast<type>(expr)
|
L | N |
static_cast
|
two | compile time checked conv |
static_cast<type>(expr)
|
L | N |
reinterpret_cast
|
two | unchecked conv |
reinterpret_cast<type>(expr)
|
L | N |
const_cast
|
two | const conv |
const_cast<type>(expr)
|
L | N |
sizeof
|
one | Size in bytes |
sizeof expr
or sizeof(type)
|
R | N |
++
|
one | Pre Increment |
++varName
|
R | Y |
--
|
one | Pre Decrement |
--varName
|
R | Y |
~
|
one | Bitwise negation |
~ expr
|
R | Y |
!
|
one | Logical negation |
! expr
|
R | Y |
+, -
|
one | Unary plus, unary minus |
+expr
or
-expr
|
R | Y |
*
|
one | Pointer dereference | * ptr | R | Y |
&
|
one | AddressOf | & lvalue | R | Y |
new
|
one | Allocate |
new type
or new type(expr-list)
|
R | Y |
new [ ]
|
two | Allocate array |
new type [ size ]
|
L | Y |
delete
|
one | Deallocate |
delete ptr
|
R | Y |
delete [ ]
|
one | Deallocate array |
delete [ ] ptr
|
R | M |
( ) | two | C-style type cast |
( type ) expr
|
R | N [b] |
->*
|
two | Member ptr selector via ptr |
ptr->*ptrToMember
|
L | M |
.*
|
two | Member ptr selector via obj |
obj.*ptrToMember
|
L | N |
*
|
two | Multiply |
expr1 * expr2
|
L | Y |
/
|
two | Divide |
expr1 / expr2
|
L | Y |
%
|
two | Remainder |
expr1 % expr2
|
L | Y |
+
|
two | Add |
expr1 + expr2
|
L | Y |
-
|
two | Subtract |
expr1 - expr2
|
L | Y |
<<
|
two | Bitwise left shift |
expr << shiftAmt
|
L | Y |
>>
|
two | Bitwise right shift |
expr >> shiftAmt
|
L | Y |
<
|
two | Less than |
expr1 < expr2
|
L | Y |
<=
|
two | Less or equal |
expr1 <= expr2
|
L | Y |
>
|
two | Greater |
expr1 > expr2
|
L | Y |
>=
|
two | Greater or equal |
expr1 >= expr2
|
L | Y |
==
|
two | Equals [c] |
expr1 == expr2
|
L | Y |
!=
|
two | Not equal |
expr1 != expr2
|
L | Y |
&
|
two | Bitwise AND |
expr1 & expr2
|
L | Y |
^
|
two | Bitwise XOR (exclusive OR) |
expr1 ^ e2
|
L | Y |
|
|
two | Bitwise OR (inclusive OR) |
expr1 | expr2
|
L | Y |
&&
|
two | Logical AND |
expr1 && expr2
|
L | Y |
||
|
two | Logical OR | expr1 || expr2 | L | Y |
=
|
two | Assign |
expr1 = expr2
|
R | Y |
*=
|
two | Multiply and assign |
expr1 *= expr2
|
R | Y |
/=
|
two | Divide and assign |
expr1 /= expr2
|
R | Y |
%=
|
two | Modulo and assign |
expr1 %= expr2
|
R | Y |
+=
|
two | Add and assign |
expr1 += expr2
|
R | Y |
-=
|
two | Subtract and assign |
expr1 -= expr2
|
R | Y |
<<=
|
two | Left shift and assign |
expr1 <<= expr2
|
R | Y |
>>=
|
two | Right shift and assign |
expr1 >>= expr2
|
R | Y |
&=
|
two | And and assign |
expr1 &= expr2
|
R | Y |
|=
|
two | Inclusive or and assign |
expr1 |= expr2
|
R | Y |
^=
|
two | Exclusive or and assign |
expr1 ^= expr2
|
R | Y |
? :
|
three | Conditional expression |
bool ? expr : expr
|
L | N |
throw
|
one | Throw exception |
throw expr
|
R | N |
,
|
two | Sequential Evaluation (comma) |
expr , expr
|
L | Y |
[a] The function call operator may be declared to take any number of operands. [b] The type-cast operator may use constructors or conversion operators to convert custom types. [c]
This operator should not be used for |
Generated: 2012-03-02 | © 2012 Alan Ezust and Paul Ezust. |