Перейти до вмісту

Friend в С++


В цій темі немає відповідей

#1 Amarok

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2350 повідомлень
  • Стать:Чоловік
  • Місто:Дубно -> Нетішин -> Київ -> New York

Відправлено 17.01.2013 – 02:11

  • 0
Досить часто зустрічаються дискусії на тему цієї "фічі" мови. В основному хребет дискусії заключається в: чи декларування "друзів" класу ламають чи розширюють енкапсуляцію?

Ламання енкапсуляції означає що можливо отримати внаслідок певної неуважності такий собі експлойт, тобто доступ до даних до яких ви наче не очікуєте щоб хтось міг змінювати (таке можливо, через певну маніпуляцію з реферансами). Приклад позитовного боку може бути у випадку з фабриками коли ви хочете щоб тільки фабрика могла коструювати обєкти.

В тих ситуаціях можна обійтись і без френдів, використовуючи константні геттери чи протектед якщо так дуже треба щоб класи мали доступ до приватних даних і в край не можете написати геттери. Тобто виходить що ця "фіча" не така уже й потрібна чи потрібна але у дуже рідкісних випадках.

Хоча деякі вважають френди як окремий рівень доступу. На мою думку, стосовно рівня доступу то це вже швидше всього-на-всього як виключення для прайвет а не окремий рівень доступу.


Так от, яка ваша позиція стосовно декларування френдів для класів?



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних