Overloading <<, >> Operators
We overload the << and >> operators for insertion into the
output stream and extraction from the input stream.
The iostream library overloads these operators for the
built-in data types, but is not equipped to handle new data
types that we create. Therefore, in order for extraction and
insertion operators to be used with objects of our classes,
we must overload these operators ourselves.
The extraction and insertion operators must be overloaded
as non-members because the first operand is an object of
type istream or ostream and not an object of one of our
classes.