so.. why is it termed operator then?? what makes it special?
In other words, by looking at the syntax (apart from the fact that the name starts with operator) will we be able to know whether a given function is an operator??
An overloaded operator is a function. It's called operator because it looks like a regular operator at the call point (but it doesn't have to).
Now, regular operators are nothing like functions. http://en.wikipedia.org/wiki/Operator_%28programming%29
No, you can only edit existing operators. Operators are basically functions that handle basic arithmetics with specific types. You can overload them; causing them to support more types, but you cannot create new ones.
The other answer is yes, you can override the address-of operator, however there is
rarely a need to do so, is annoying (see boost::addressof), and often times can end up
breaking code that unwittingly assumes that &obj gives a pointer to the first byte of
memory used for "obj" if "obj" is of class/struct type (and no multiple inheritance used).