what i know until now is that we can overload << >> + - ++ ..
but i cannot understand when we declare the operator we put this & before the variable also sometimes we write 2 variables in operator declare
other times when we overload << or >> at operator function we first put ostream and istream (if its >> or <<) first and we return *this which i cannot understand what is it
anyway i need a good tutorial to explain my above queries and general about overloading