Разница между дружественными функциями и обычными функциями в C++ заключается в доступе к закрытым членам класса. 1
Дружественная функция — это функция, которая не является членом класса, но имеет доступ к закрытым и защищенным членам класса, как если бы она сама была членом этого класса. 25
Обычная функция не обладает такими возможностями.
Дружественная функция может располагаться в любом поле класса — private, public или protected. 3 Она вызывается как обычная функция, но при этом имеет возможность работать с элементами определённого класса. 35
Для объявления дружественной функции используется ключевое слово friend перед прототипом функции. 1