I have a function prototype inside a public class access specifier. They offer better flexibility, which is not provided by the member function of the class. The this pointer is a special builtin pointer that is automatically passed as a hidden argument to all non static member functions. It must be a member because operator is special and you would not gain something by writing it as a nonmember anyway.
Basically, a class member static operator doesnt buy anything over a nonstatic member. The difference between member function and friend function is that the member function takes argument explicitly. The assignment operator must be a nonstatic member function and must have exactly one parameter. A member operator takes that argument in the form of the implicit this parameter. In case we define above function as nonmember function of a class then we would have to pass two arguments for each operand as follows.