One of behaviors of a type is the operations you can apply to it. C++ allows you to overload the C++ operators as part of a class so that it's clear that the operator is acting upon the type. This means that for a unary operator the member method should have no parameters and for a binary operator you need only one parameter, since the current object will be on the left of the operator, and hence the method parameter is the item on the right. The following table summarizes how to implement unary and binary operators, and four exceptions:
Expression | Name | Member method | Non-member function |
+a/-a | Prefix unary | operator() | operator(a) |
a, b | Binary | operator(b) | operator(a,b) |
a+/a- | Postfix unary | operator(0) | operator(a,0) ... |