They, cats being, even domesticated cats seem to be fairly territorial.
So, they do hiss at each other, and they especially fight over their food bowls.
But a critical thing about friends, and that's going to be true in C++ is, if
you're a really good friend of mine, I'm gonna let you look at my private stuff.
I'm gonna let you look at the private implementation of my class,
that gives me the opportunity to act on your class,
almost as if I was a member function.
So a friend function has access as if it was a member function,
but it's not a member function.
If it's not a member function that means it has no access to what?
Think about that.
Is one thing that member functions always get, ordinary member functions always get,
that functions that are called
with arguments on the class don't get, and that's the disc pointer.
Remember, a member function is activated through the disc pointer.
Friend function get's to treat the private parts as if it was a member function,
but doesn't get to directly access because that's not
pass in an argument through the dot notation.
There's a class point, and again,
because the C object oriented idiom,
we want the behavior of the bit shift operator to be used for IO.
Again, here we see the IO signature that's our idiom.
We need this call by reference, we pass back out call by reference.
We have a non-mutated object passed by reference.
And it's semantics are that we're gonna prevent a point looking like this.