title=C++ Programming: Language Default Operators
Appearance
Table of operators
[edit | edit source]Operators in the same group have the same precedence and the order of evaluation is decided by the associativity (left-to-right or right-to-left). Operators in a preceding group have higher precedence than those in a subsequent group.
| Operators | Description | Example Usage | Associativity |
|---|---|---|---|
| Scope Resolution Operator | — | ||
:: |
unary scope resolution operator for globals |
::NUM_ELEMENTS
| |
:: |
binary scope resolution operator for class and namespace members |
std::cout
| |
| Function Call, Member Access, Post-Increment/Decrement Operators, RTTI and C++ Casts | Left to right | ||
() |
function call operator | swap (x, y)
| |
[] |
array index operator | arr [i]
| |
. |
member access operator for an object of class/union type or a reference to it |
obj.member
| |
-> |
member access operator for a pointer to an object of class/union type |
ptr->member
| |
++ -- |
post-increment/decrement operators | num++
| |
typeid() |
run time type identification operator for an object or type |
typeid (std::cout)typeid (std::iostream)
| |
static_cast<>()dynamic_cast<>()const_cast<>()reinterpret_cast<>()
|
C++ style cast operators for compile-time type conversion See Type Casting for more info |
static_cast<float> (i)const_cast<char*> ("Hello, World!")reinterpret_cast<const long*> ("C++")
| |
type() |
functional cast operator ( static_cast is preferredfor conversion to a primitive type) |
float (i)
| |
| also used as a constructor call for creating a temporary object, esp. of a class type |
std::string ("Hello, world!", 0, 5)
| ||
| Unary Operators | Right to left | ||
!, not |
logical not operator | !eof_reached
| |
~, compl |
bitwise not operator | ~mask
| |
+ - |
unary plus/minus operators | -num
| |
++ -- |
pre-increment/decrement operators | ++num
| |
&, bitand |
address-of operator | &data
| |
* |
indirection operator | *ptr
| |
newnew[]new()new()[]
|
new operators for single objects or arrays |
new std::string (5, '*')new int [100]new (raw_mem) intnew (arg1, arg2) int [100]
| |
deletedelete[] |
delete operator for pointers to single objects or arrays |
delete ptrdelete[] arr
| |
sizeof |
sizeof operator for expressions or types |
sizeof 123sizeof (int)
| |
(type) |
C-style cast operator (deprecated) | (float)i
| |
| Member Pointer Operators | Right to left | ||
.* |
member pointer access operator for an object of class/union type or a reference to it |
obj.*memptr
| |
->* |
member pointer access operator for a pointer to an object of class/union type |
ptr->*memptr
| |
| Multiplicative Operators | Left to right | ||
* / % |
multiplication, division and modulus operators |
celsius_diff * 9 / 5
| |
| Additive Operators | Left to right | ||
+ - |
addition and subtraction operators | end - start + 1
| |
| Bitwise Shift Operators | Left to right | ||
<<>> |
left and right shift operators | bits << shift_lenbits >> shift_len
| |
| Relational Inequality Operators | Left to right | ||
< > <= >= |
less-than, greater-than, less-than or equal-to, greater-than or equal-to |
i < num_elements
| |
| Relational Equality Operators | Left to right | ||
== !=, not_eq |
equal-to, not-equal-to | choice != 'n'
| |
| Bitwise And Operator | Left to right | ||
&, bitand |
bits & clear_mask_complement
| ||
| Bitwise Xor Operator | Left to right | ||
^, xor |
bits ^ invert_mask
| ||
| Bitwise Or Operator | Left to right | ||
|, bitor |
bits | set_mask
| ||
| Logical And Operator | Left to right | ||
&&, and |
arr != 0 && arr->len != 0
| ||
| Logical Or Operator | Left to right | ||
||, or |
arr == 0 || arr->len == 0
| ||
| Conditional Operator | Right to left | ||
?: |
size >= 0 ? size : 0
| ||
| Assignment Operators | Right to left | ||
= |
assignment operator | i = 0
| |
+= -= *= /= %=&=, and_eq|=, or_eq ^=, xor_eq <<= >>=
|
shorthand assignment operators ( foo op= bar representsfoo = foo op bar) |
num /= 10
| |
| Exceptions | — | ||
throw |
throw "Array index out of bounds"
| ||
| Comma Operator | Left to right | ||
, |
i = 0, j = i + 1, k = 0
| ||