To overload an operator we use a special class member function called the “operator” function. The operator function has the following format.
returntype operator op(argument list);
* “operator” is a keyword.
* “op” is the operator to be overloaded , it has to be a valid c++ operator, we cannot overload any arbitrary symbol to perform some operation.
Rules for overloading Operators:
* Only existing operators can be overloaded.
* we cannot create a new operator and overload it.
* The operator must have at least one operand that is user defined type.
* We cannot change the basic meaning of an operator. i.e. we cannot redefine “+” operator to subtract or multiply two objects.
* The overloaded operator has to follow all the syntax rules of the original operator. They cannot be overridden/overlooked.
There are certain restrictions in operator overloading
* We cannot create new operator system by overloading
* An overloaded operator should not violate the system rules for the original operator.
* To overload an operator , at least one of the operand should be a user defined type.
The following operators cannot be overloaded.
|. (dot operator)||direct membership operator|
|* (value at operator)||member dereference operator|
|::||scope resolution operator|
|?:||conditional operator / ternary operator|
It is the responsibility of the programmer to make sure that the overloaded operator performs the same function as the normal operator does.
Operators can be overloaded with and without using the friend function