Better Design If a function doesn't need to be a friend it shouldn't be If the class internals change, then friend functions might also have to OO is supposed to stop this by hiding internals operator<< shouldn't need to be a friend