Total Articles 117
from : http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
Arithmetic operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T is any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Basic assignment | a = b | Yes | Yes | T& T::operator =(const T& b); | N/A | |
| Addition | a + b | Yes | Yes | T T::operator +(const T& b) const; | T operator +(const T& a, const T& b); | |
| Subtraction | a - b | Yes | Yes | T T::operator -(const T& b) const; | T operator -(const T& a, const T& b); | |
| Unary plus (integer promotion) | +a | Yes | Yes | T T::operator +() const; | T operator +(const T& a); | |
| Unary minus (additive inverse) | -a | Yes | Yes | T T::operator -() const; | T operator -(const T& a); | |
| Multiplication | a * b | Yes | Yes | T T::operator *(const T& b) const; | T operator *(const T &a, const T& b); | |
| Division | a / b | Yes | Yes | T T::operator /(const T& b) const; | T operator /(const T& a, const T& b); | |
| Modulo (remainder) | a % b | Yes | Yes | T T::operator %(const T& b) const; | T operator %(const T& a, const T& b); | |
| Increment | Prefix | ++a | Yes | Yes | T& T::operator ++(); | T& operator ++(T& a); |
| Suffix | a++ | Yes | Yes | T T::operator ++(int); | T operator ++(T& a, int); | |
| Note: C++ uses the unnamed dummy-parameter int to differentiate between prefix and suffix increment operators. | ||||||
| Decrement | Prefix | --a | Yes | Yes | T& T::operator --(); | T& operator --(T& a); |
| Suffix | a-- | Yes | Yes | T T::operator --(int); | T operator --(T& a, int); | |
| Note: C++ uses the unnamed dummy-parameter int to differentiate between prefix and suffix decrement operators. | ||||||
[edit]Comparison operators/relational operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T is any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Equal to | a == b | Yes | Yes | bool T::operator ==(const T& b) const; | bool operator ==(const T& a, const T& b); | |
| Not equal to | a != b | Yes | Yes | bool T::operator !=(const T& b) const; | bool operator !=(const T& a, const T& b); | |
| Greater than | a > b | Yes | Yes | bool T::operator >(const T& b) const; | bool operator >(const T& a, const T& b); | |
| Less than | a < b | Yes | Yes | bool T::operator <(const T& b) const; | bool operator <(const T& a, const T& b); | |
| Greater than or equal to | a >= b | Yes | Yes | bool T::operator >=(const T& b) const; | bool operator >=(const T& a, const T& b); | |
| Less than or equal to | a <= b | Yes | Yes | bool T::operator <=(const T& b) const; | bool operator <=(const T& a, const T& b); | |
[edit]Logical operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T is any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Logical negation (NOT) | !a | Yes | Yes | bool T::operator !() const; | bool operator !(const T& a); | |
| Logical AND | a && b | Yes | Yes | bool T::operator &&(const T& b) const; | bool operator &&(const T& a, const T& b); | |
| Logical OR | a || b | Yes | Yes | bool T::operator ||(const T& b) const; | bool operator ||(const T& a, const T& b); | |
[edit]Bitwise operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T is any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Bitwise NOT | ~a | Yes | Yes | T T::operator ~() const; | T operator ~(const T& a); | |
| Bitwise AND | a & b | Yes | Yes | T T::operator &(const T& b) const; | T operator &(const T& a, const T& b); | |
| Bitwise OR | a | b | Yes | Yes | T T::operator |(const T& b) const; | T operator |(const T& a, const T& b); | |
| Bitwise XOR | a ^ b | Yes | Yes | T T::operator ^(const T& b) const; | T operator ^(const T& a, const T& b); | |
| Bitwise left shift[note 1] | a << b | Yes | Yes | T T::operator <<(const T& b) const; | T operator <<(const T& a, const T& b); | |
| Bitwise right shift[note 1][note 2] | a >> b | Yes | Yes | T T::operator >>(const T& b) const; | T operator >>(const T& a, const T& b); | |
[edit]Compound assignment operators
| Operator name | Syntax | Meaning | Overloadable | Included in C | Prototype examples (T is any type) | ||
|---|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | ||||||
| Addition assignment | a += b | a = a + b | Yes | Yes | T& T::operator +=(const T& b); | T& operator +=(T& a, const T& b); | |
| Subtraction assignment | a -= b | a = a - b | Yes | Yes | T& T::operator -=(const T& b); | T& operator -=(T& a, const T& b); | |
| Multiplication assignment | a *= b | a = a * b | Yes | Yes | T& T::operator *=(const T& b); | T& operator *=(T& a, const T& b); | |
| Division assignment | a /= b | a = a / b | Yes | Yes | T& T::operator /=(const T& b); | T& operator /=(T& a, const T& b); | |
| Modulo assignment | a %= b | a = a % b | Yes | Yes | T& T::operator %=(const T& b); | T& operator %=(T& a, const T& b); | |
| Bitwise AND assignment | a &= b | a = a & b | Yes | Yes | T& T::operator &=(const T& b); | T& operator &=(T& a, const T& b); | |
| Bitwise OR assignment | a |= b | a = a | b | Yes | Yes | T& T::operator |=(const T& b); | T& operator |=(T& a, const T& b); | |
| Bitwise XOR assignment | a ^= b | a = a ^ b | Yes | Yes | T& T::operator ^=(const T& b); | T& operator ^=(T& a, const T& b); | |
| Bitwise left shift assignment | a <<= b | a = a << b | Yes | Yes | T& T::operator <<=(const T& b); | T& operator <<=(T& a, const T& b); | |
| Bitwise right shift assignment[note 2] | a >>= b | a = a >> b | Yes | Yes | T& T::operator >>=(const T& b); | T& operator >>=(T& a, const T& b); | |
[edit]Member and pointer operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T, T2 and R are any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Array subscript | a[b] | Yes | Yes | R& T::operator [](const T2& b); | N/A | |
| Indirection ("object pointed to by a") | *a | Yes | Yes | R& T::operator *(); | R& operator *(T& a); | |
| Reference ("address of a") | &a | Yes | Yes | T* T::operator &(); | T* operator &(T& a); | |
| Structure dereference ("member b of object pointed to by a") | a->b | Yes | Yes | R* T::operator ->(); | N/A | |
| Structure reference ("member b of object a") | a.b | No | Yes | N/A | ||
| Member pointed to by b of object pointed to by a[note 3] | a->*b | Yes | No | R T::operator->*(R);[note 4] | R operator->*(T, R);[note 4] | |
| Member pointed to by b of object a | a.*b | No | No | N/A | ||
[edit]Other operators
| Operator name | Syntax | Overloadable | Included in C | Prototype examples (T, R, Arg1 and Arg2 are any type) | ||
|---|---|---|---|---|---|---|
| As member of T | Outside class definitions | |||||
| Function call See Function object. | a(a1, a2) | Yes | Yes | R T::operator ()(Arg1 a1, Arg2 a2, …); | N/A | |
| Comma | a, b | Yes | Yes | R& T::operator ,(R& b) const; | R& operator ,(const T& a, R& b); | |
| Ternary conditional | a ? b : c | No | Yes | N/A | ||
| Scope resolution | a::b | No | No | N/A | ||
| Size-of | sizeof(a)[note 5]sizeof(type) | No | Yes | N/A | ||
| Align-of | alignof(type)or _Alignof(type)[note 6] | No | No | N/A | ||
| Type identification | typeid(a)typeid(type) | No | No | N/A | ||
| Cast | (type) a | Yes | Yes | T::operator R() const; | N/A | |
| Note: for user-defined conversions, the return type implicitly and necessarily matches the operator name. | ||||||
| Allocate storage | new type | Yes | No | void* T::operator new(size_t x); | void* operator new(size_t x); | |
| Allocate storage (array) | new type[n] | Yes | No | void* T::operator new[](size_t x); | void* operator new[](size_t x); | |
| Deallocate storage | delete a | Yes | No | void T::operator delete(void* x); | void operator delete(void* x); | |
| Deallocate storage (array) | delete[] a | Yes | No | void T::operator delete[](void* x); | void operator delete[](void* x); | |
