Friendship overrides the normal protection rules provided using the keywords private and protected. A friend is allowed access to all parts of a class, even if they are declared private. On the positive side this allows individual classes are functions to interact closely with a class without forcing data fields to have wider accessibility that would otherwise be desired. On the negative side it means to that understand how a class is being used you need to examine more than just the class itself, and all friends may potentially be making changes to the internal state of an instance of the class.