Well, I hope you have some sleep now, I know how does it feel, when it's 4 am!
In the example you gave about overloading the operator << and operator >> you cann't make them member functions because they should be members in the cout and cin objects, and that's not possible, and the only way is to make them friend functions...
And for the example: object + 2 and 2 + object, If you want to implement a them both as friend function you will have to write two functions, but would do it, by making the function 2 + object a friend function and the object + 2 function a member function...
About the statement I gave, I think it's a general programming principle...
But anyways I might be wrong, because I'm not experienced in C++...
Maybe we can make a thread about that, and ask for the advice of experiences programmers...