![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Есть класс Б, который является friend'ом класса A. У класса А есть несколько private параметорв.
Вопрос: стоит ли какая-то угроза безопасности доступа к private'ам класса А? Ведь по сути - private'ы - нужны для того, чтобы закрыть нежелательный запрос к определённым параметрам, а тут его открывают ![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Дружественный класс имеет доступ к private секции класса.
Что такое нежелательный запрос? |
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
А друзья нужны что бы его открыть ![]() ![]() Это сообщение отредактировал(а) Sartorius - 23.1.2007, 17:34 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
Anikmar, конечно может, он может вообще ехе-шник в нех-редакторе подправить. Ведь секции private и protected создаются не для того чтобы усложнить пользователю жизнь, а совсем наооборот, чтобы показать какие методы ему следует использовать, а какие используются для внутренних нужд. Если он откроет доступ. то никто ругаться естественно не будет.
|
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
Не знаю ругнется ли линкер, если поменять описание класса(добавить какого нибудь друга). (скорее всего нет , так как это дело только компилятора) Менять h-ник можно сколько угодно, но ведь что бы реально можно было вызывать эту дружественную функцию , нада все перекомпилировать. А без реализации класса этого не сделать...
![]() Добавлено @ 18:02 Присоединяюс к zkv. Секции - это не борьба за копирайт и т.п., а средство, которое позволяет превратить логические ошибки в синтаксические |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
zkv, Совершенно согласен. Секции предназначены для самоконтроля и дисциплины.
Этот вопросик я задал перекликаясь с первым постом:
Пользователю нельзя ничего запретить - если захочет, все равно влезет. А вот сказать заранее, куда лезть не надо - это да. По-моему друзья придуманы для запоздалого исправления ошибок в проектировании класса ![]() Добавлено @ 18:05 Вот я и спросил - ругнется линкер или нет? Перкомпиляция самого класса не нужна, просто находятся ли члены из приват-секции в таблице символов линкера? |
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
Может и так ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Естественно это была шутка, но мне приходилось использовать их именно в этом качестве - что-то не додумал при организации класса, потом понадобился новый функционал, а класс лопатить уже неохота - результат появление друга... Думаю есть очень много оснований для использования друзей в более общем случае. |
|||
|
||||
Rockie |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
пользователь? всмысле тот что кнопы жмакает? ![]() ![]()
то есть объявить друга можно было а дописать метод, который бы обращался к приватным полям нельзя было? -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Именно так. Класс вызывал форму, которая при закрытии должна была обнулить указатель на саму себя. Было лень писать метод - так как таких форм было порядка 10 (изначально ошибся в выборе стратегии - думал они будут модальные, а оказалось что неудобно работать) Чем писать 10 методов (ну лень мне стало!) я обявил 10 форм друзьями. ![]() ИМХО Работает и ладно! - не для преподавателя, для себя пишу. |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: нет Всего: 38 |
В данном случае пользователь это программист, при чем тут тот кто кнопки жмет -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
KelTron, при том, что тот кто кнопки жмет, в состоянии поломать абсолютно все =) Добавлено @ 03:15 KelTron, вообще любое сообщение стоит рассматривать в контексте -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Если изменить доступ, но не перекомпилировать библиотеку, то да: реальные имена включают модификаторы доступа, по крайней мере в MSVC. На добавление friend - нет. С таким подходом быстро допишешься... -------------------- ... |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Спорный момент. Это не является критической ошибкой в подходе и никоим образом не приведет к косякам - так как и класс и формы находятся в одной библиотеке, и даже если другой программист будет этой библиотекой пользоваться ничего страшного не произойдет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |