Концепция дружественных функций в C++ используется для предоставления функции доступа к закрытым или защищенным членам класса, если она логически не является его членом. 15
Некоторые причины, по которым это нужно:
Также дружественные функции помогают в сериализации, позволяя классам эффективно сериализовать и десериализовать свои частные данные без нарушения инкапсуляции. 1