Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
#1

класс Friend - C++

25.02.2014, 17:43. Просмотров 238. Ответов 3
Метки нет (Все метки)

Подскажите в каких случаях лучше использовать класс friend?
Известно что класс friend нарушает принцип инкапсуляции, так почему же мы его используем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2014, 17:43     класс Friend
Посмотрите здесь:

Friend Function C++
friend function C++
Friend - класс шаблон C++
Friend класса C++
friend function C++
Не работает friend C++
Класс friend C++
C++ friend классы
friend class C++
Friend function C++
C++ Friend-функции
Friend для friend C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6243 / 5846 / 1891
Регистрация: 18.12.2011
Сообщений: 14,977
Завершенные тесты: 1
25.02.2014, 18:05     класс Friend #2
Класс назначается дружественным в случае тесного взаимодействия с ним.
Например, создаем класс Дерево, которому нужен доступ к классу Ветвь.
Тогда Дерево должно быть другом к Ветвь.
Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
25.02.2014, 19:43  [ТС]     класс Friend #3
у меня двусвязный список, это не совсем дерево... Да и не видел я что бы дерево как друг обьявлялся...
Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
09.03.2014, 13:08  [ТС]     класс Friend #4
Узнал почему, мб кому понадобится:

Всё, что делает оператор friend - это даёт доступ указанному классу к private и protected членам данного класса. По теории это всё.

В нашем случае мы даём доступ классу-контейнеру BookList доступ к приватным элементам m_next и m_prev класса Issue. Это необходимо для того, чтобы контейнер мог изменять связи между элементами списка при удалении элементов списка.

Если убрать этот оператор, то тогла надо будет написать функции set_next(Issue *I) и set_prev(Issue *I). Но в таком случае любые другие классы будут иметь доступ к связям списка и инкапсуляция тогда будет нарушена ещё больше. Из двох зол мы выбрали меньшее.
Yandex
Объявления
09.03.2014, 13:08     класс Friend
Ответ Создать тему
Опции темы

Текущее время: 19:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru