Member Function Friends
But... A member function cannot be declared a friend
before it is first declared as a member of its own class.
Unlike a friend class, where we can have an incomplete
declaration, friend member function declarations (in our
declaring class) cannot take place until after the member
functions have been declared (in their own class).
If two or more classes share the same friend class or
function, those classes share a mutual friend. This means
that more than one class gives a single friend class or
function permission to access their members.