| Operator |
Description |
Example |
Overloadable |
| Group 1 (no associativity) |
| :: |
Scope resolution operator |
Class::age = 2; |
NO |
| Group 2 |
| () |
Function call |
isdigit('1') |
YES |
| () |
Member initalization |
c_tor(int x, int y) : _x(x), _y(y*10){}; |
YES |
| [] |
Array access |
array[4] = 2; |
YES |
| -> |
Member access from a pointer |
ptr->age = 34; |
YES |
| . |
Member access from an object |
obj.age = 34; |
NO |
| ++ |
Post-increment |
for( int i = 0; i < 10; i++ ) cout << i; |
YES |
| -- |
Post-decrement |
for( int i = 10; i > 0; i-- ) cout << i; |
YES |
| const_cast |
Special cast |
const_cast<type_to>(type_from); |
NO |
| dynamic_cast |
Special cast |
dynamic_cast<type_to>(type_from); |
NO |
| static_cast |
Special cast |
static_cast<type_to>(type_from); |
NO |
| reinterpret_cast |
Special cast |
reinterpret_cast<type_to>(type_from); |
NO |
| typeid |
Runtime type information |
cout « typeid(var).name();
cout « typeid(type).name(); |
NO |
| Group 3 (right-to-left associativity) |
| ! |
Logical negation |
if( !done ) … |
YES |
| not |
Alternate spelling for ! |
| ~ |
Bitwise complement |
flags = ~flags; |
YES |
| compl |
Alternate spelling for ~ |
| ++ |
Pre-increment |
for( i = 0; i < 10; ++i ) cout << i; |
YES |
| -- |
Pre-decrement |
for( i = 10; i > 0; --i ) cout << i; |
YES |
| - |
Unary minus |
int i = -1; |
YES |
| + |
Unary plus |
int i = +1; |
YES |
| * |
Dereference |
int data = *intPtr; |
YES |
| & |
Address of |
int *intPtr = &data; |
YES |
| new |
Dynamic memory allocation |
long *pVar = new long;
MyClass *ptr = new MyClass(args); |
YES |
| new [] |
Dynamic memory allocation of array |
long *array = new long[n]; |
YES |
| delete |
Deallocating the memory |
delete pVar; |
YES |
| delete [] |
Deallocating the memory of array |
delete [] array; |
YES |
| (type) |
Cast to a given type |
int i = (int) floatNum; |
YES |
| sizeof |
Return size of an object or type |
int size = sizeof floatNum;
int size = sizeof(float); |
NO |
| Group 4 |
| ->* |
Member pointer selector |
ptr->*var = 24; |
YES |
| .* |
Member object selector |
obj.*var = 24; |
NO |
| Group 5 |
| * |
Multiplication |
int i = 2 * 4; |
YES |
| / |
Division |
float f = 10.0 / 3.0; |
YES |
| % |
Modulus |
int rem = 4 % 3; |
YES |
| Group 6 |
| + |
Addition |
int i = 2 + 3; |
YES |
| - |
Subtraction |
int i = 5 - 1; |
YES |
| Group 7 |
| << |
Bitwise shift left |
int flags = 33 << 1; |
YES |
| >> |
Bitwise shift right |
int flags = 33 >> 1; |
YES |
| Group 8 |
| < |
Comparison less-than |
if( i < 42 ) … |
YES |
| <= |
Comparison less-than-or-equal-to |
if( i <= 42 ) ... |
YES |
| > |
Comparison greater-than |
if( i > 42 ) … |
YES |
| >= |
Comparison greater-than-or-equal-to |
if( i >= 42 ) ... |
YES |
| Group 9 |
| == |
Comparison equal-to |
if( i == 42 ) ... |
YES |
| eq |
Alternate spelling for == |
| != |
Comparison not-equal-to |
if( i != 42 ) … |
YES |
| not_eq |
Alternate spelling for != |
| Group 10 |
| & |
Bitwise AND |
flags = flags & 42; |
YES |
| bitand |
Alternate spelling for & |
| Group 11 |
| ^ |
Bitwise exclusive OR (XOR) |
flags = flags ^ 42; |
YES |
| xor |
Alternate spelling for ^ |
| Group 12 |
| | |
Bitwise inclusive (normal) OR |
flags = flags | 42; |
YES |
| bitor |
Alternate spelling for | |
| Group 13 |
| && |
Logical AND |
if( conditionA && conditionB ) … |
YES |
| and |
Alternate spelling for && |
| Group 14 |
| || |
Logical OR |
if( conditionA || conditionB ) ... |
YES |
| or |
Alternate spelling for || |
| Group 15 (right-to-left associativity) |
| ? : |
Ternary conditional (if-then-else) |
int i = (a > b) ? a : b; |
NO |
| Group 16 (right-to-left associativity) |
| = |
Assignment operator |
int a = b; |
YES |
| += |
Increment and assign |
a += 3; |
YES |
| -= |
Decrement and assign |
b -= 4; |
YES |
| *= |
Multiply and assign |
a *= 5; |
YES |
| /= |
Divide and assign |
a /= 2; |
YES |
| %= |
Modulo and assign |
a %= 3; |
YES |
| &= |
Bitwise AND and assign |
flags &= new_flags; |
YES |
| and_eq |
Alternate spelling for &= |
| ^= |
Bitwise exclusive or (XOR) and assign |
flags ^= new_flags; |
YES |
| xor_eq |
Alternate spelling for ^= |
| |= |
Bitwise normal OR and assign |
flags |= new_flags; |
YES |
| or_eq |
Alternate spelling for |= |
| <<= |
Bitwise shift left and assign |
flags <<= 2; |
YES |
| >>= |
Bitwise shift right and assign |
flags >>= 2; |
YES |
| Group 17 |
| throw |
throw exception |
throw EClass(“Message”); |
NO |
| Group 18 |
| , |
Sequential evaluation operator |
for( i = 0, j = 0; i < 10; i++, j++ ) … |
YES |