Класс друзей Класс друзей может получить доступ к закрытым и защищенным членам другого класса, в котором он объявлен как друг. Иногда полезно разрешить определенному классу доступ к закрытым членам другого класса. Например, классу LinkedList может быть разрешен доступ к закрытым членам Node.
|
Функция друга Как и класс друга, функции друга может быть предоставлен специальный грант для доступа к закрытым и защищенным членам. Функция друга может быть:
а) метод другого класса
б) глобальная функция
|
Ниже приведены некоторые важные моменты о функциях и классах друзей:
1) Друзья должны использоваться только для ограниченных целей. слишком много функций или внешних классов объявляются как друзья класса с защищенными или частными данными, это уменьшает ценность инкапсуляции отдельных классов в объектно-ориентированном программировании.
2) Дружба не является взаимной. Если класс A является другом B, то B не становится другом A автоматически.
3) Дружба не наследуется (см. Это для более подробной информации)
4) Понятие друзей отсутствует в Java.
Простая и полная программа C ++, чтобы продемонстрировать другу класс
|
Выход:
A::a=0
Простая и полная программа C ++ для демонстрации функции друга другого класса
|
Выход:
B::b = 0
Простая и полная программа C ++, чтобы продемонстрировать глобальный друг
|
Выход:
A::a = 0
Ссылки:
http://en.wikipedia.org/wiki/Friend_class
http://en.wikipedia.org/wiki/Friend_function
http://www.cprogramming.com/tutorial/friends.html
http://www.parashift.com/c++-faq/friends-and-encap.html
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Можем ли мы получить доступ к закрытым данным членов класса, не используя функцию член или друга?
- Программа на C ++ для обмена двумя членами с помощью функции Friend
- Вопросы об интервью C ++ по виртуальной функции и абстрактному классу
- Как преобразовать класс в другой тип класса в C ++?
- std :: any Класс в C ++
- класс std :: valarray в C ++
- std :: hash класс в C ++ STL
- класс std :: string в C ++
- Класс массива в C ++
- Структура против класса в C ++
- Как реализовать наш собственный векторный класс в C ++?
- Разница между пространством имен и классом
- Виртуальный базовый класс в C ++
- C ++ String Class и его приложения | Набор 2
- Класс сканера в Java
0.00 (0%) 0 votes