No, they are not the same. A unary operator+ is used as +ob.
> 2)Why do I get the compilation error for 'c'-
>
> error: 'void Abc::operator<<()' must take exactly one argument
> void operator<<(){cout<<x<<endl;cout<<y<<endl;}
The compiler tells you that there is no version of operator<< that takes
no parameters.
A member operator takes one parameter (plus *this). A non-member takes
two parameters (and has no *this).
>
> 3)Is it necessary to overload << operator as friend function?
No, but is often a convenient way to access private class members.
>
> 4)Similarly,is it a rule that overloading postfix operator requires
> a dummy argument & that to an int?
Yes, but only for the postfix operators ++ and --. For other operators
you cannot choose how they work.
>
> 5)Is there a rule regarding which operator can be overloaded & out
> of them which can be member functions and which can be non-member
> functions?
Yes. Most can be either, but a few operators have to be members, the
assignment operator in particular. See
https://en.cppreference.com/w/cpp/language/operators
>
> I summary, I do not find any logical explanation regarding how an
> operator has to be overloaded.
>
There is a logic, but it is kind of complex (for various historical
reasons). You cannot learn this by testing or asking about examples, but
have to read up on this (preferrably in a book).
Bo Persson