In my C++ class this quarter, I read of the ‘friend’ keyword . Which allows instances of another class to access the private data members of another class by marking within class A that some other class B is a ‘friend’. ‘friend’ is a one way relationship. So, B can access A’s privates, however, A cannot access B’s privates. friends are not transitive either. Let ‘friend’ be the relation R. ARB is not symmetric i.e. BRA does not exist in R. And if ARB and BRC exist, ARC does not necessarily exist, R is not transitive. But of course, it can be made symmetric and transitive. Seeing ‘friend’ is a keyword in C++ was a bit funny to me, it seemed like a keyword that’d be found in INTERCAL. Upon learning its functionality, I found it to be surprisingly apt. In the human world, the characteristics of ‘friend’ match up. One may consider another a friend, while the other does not. And a friend of a friend isn’t necessarily one’s own friend. The one difference is that when humans use the keyword ‘friend’, the ‘friend’ may not get access to all the declarer’s privates or goods. A forthright person who declares another a friend will be a friend to them in all good senses of the word. Yet, the other may insincerely reciprocate this friend status out of courtesy or some ulterior motive. This other person B has not declared person A as a friend in their class. Though, as long as person A believes B likes them, A will declare them a friend. It is frightening to realize your friend status to others is largely of your own construction. You can believe they truly like you or not. In the former case a grounds for manipulation, being used, and being taken advantage of is laid. I propose we call two classes who call each other friends forms a friendship. In the human world, friendship is something much more ambiguous. Something with a status I like to picture as Schrodinger’s Cat.
