Понятие дружественности.
Иногда бывает
необходимости дать доступ другим классам
к определенным приватным методам или
полям, чтобы дать другому классу (которому
мы доверяем) чуть больше власти. Они
объявляются внутри класса со спецификатором
friend и должны иметь в качестве параметра
объект или ссылку на объект. Можно
сделать другом отдельно поле, метод или
целиком класс. Пример:
class SomeClass { … }
// Описываем класс сначала до дружественного
что он был виден в нем.
class FriendClass
{
public:
void func(SomeClass
& ft); // Некий метод в
дружественном классе.
};
class SomeClass
{
friend void FriendClass::func(SomeClass &);
// Описываем приватный метод
который будет дружественен другому
классу.
}