Friend (друг) — это механизм в C++, который позволяет одному классу выдать права доступа другому классу или функции, чтобы они могли обращаться к приватным и защищённым членам класса.
Друзей можно объявить двумя способами:
Важно понимать, что дружба не симметрична и должна быть явно объявлена. То, что класс A объявил класс B другом, не означает автоматически, что A — друг B.
Друзья лучше всего подходят, когда:
Как правило, разработчик имеет и организационный, и технический контроль над объявлениями друзей и функциями-членами. Это исключает ситуации, когда нужно согласовывать с другим владельцем изменение отношений дружбы в своём собственном классе.
Хотя друзья бывают полезны, использовать их стоит редко — они ослабляют инкапсуляцию и создают жёсткие зависимости между компонентами. Воспринимай их как осознанное исключение из правил контроля доступа, а не как основной инструмент проектирования.
Friend-функции и friend-классы могут обращаться как к private, так и к protected членам класса, который объявляет их друзьями.
Новый — ещё не проверен сообществом
Вы