|
|
||||||
Кому интересно поломать голову31.01.2015, 11:51. Показов 4042. Ответов 63
Метки нет (Все метки)
Привет!
Сейчас на работе думал с ума схожу - есть код, который (с виду) работать не должен, но он работает В итоге я разобрался почему он работает, но не сразу.Предлагаю вам подумать в как и когда может работать данный код (выкладываю именно в том контексте, в который я смотрел, больше не скажу, не интересно будет)
0
|
||||||
| 31.01.2015, 11:51 | |
|
Ответы с готовыми решениями:
63
Кому интересно. Покер Бинарные деревья ! кому интересно , сюда!;) прога странно работает=) кому интересно покопать? |
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|||||||||||||
| 02.02.2015, 22:21 | |||||||||||||
|
наследование
доступ к функциям членам родителя открыт, но они не то что нежелательны в интерфейсе стэка а более того преступны! какой нахрен оператор доступа по индексу в стэке?! композиция
0
|
|||||||||||||
| 02.02.2015, 22:31 | |
|
Не по теме: Кудаив, using-и всё таки наверное в public...
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 02.02.2015, 22:40 | |||||||
|
Потому что не нужно полностью описывать все прототипы c делегирующей реализацией. Достаточно просто перечислить списки того, что хочется переиспользовать:
на практике основной юзкейс переиспользования контейнеров - породить своего наследника, и работать только с этим наследником. Никто не трогает ни базовый класс, ни полиморфизм. Поэтому, имхо смысла в защищенном наследовании не много. Проще сделать открытое наследование и не заморачиваться.
0
|
|||||||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||
| 02.02.2015, 22:47 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 02.02.2015, 22:53 | ||
|
"правильность" ради "правильности" - не нужна. Там, где есть реальная необходимость - конечно, на то она и необходимость. Но в большинстве случаев наследования от std::контейнеров, наследник не привносит собственных полей. Никто не использует никакого полиморфизма. В общем это все безопасно на практике. Потому и нет смысла заморачиваться. Но открытое, или защищенное - наследование в любом случае лучше, когда нужно поиметь функционал, чем композиция, потому что проще, и кода меньше. Для того что бы делать именно композицию нужны причины поболее, чем: "о боже! Нельзя наследоваться от стандартных контейнеров! Это ведь такой ужассно плохой тон. Об этом ведь во всех книжках писали для новичков".
0
|
||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||
| 02.02.2015, 23:02 | ||
)
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 02.02.2015, 23:04 | |
|
0
|
|
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|||
| 02.02.2015, 23:07 | |||
|
Добавлено через 21 секунду
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 02.02.2015, 23:13 | |||
|
Я повторюсь: основной юзкейс такого наследования таков, что наследник никаких своих полей не привносит. И вот что бы далеко не ходить, из этой же темы: наследник господина Renji не перестал быть std::map при публичном наследовании. И может быть безопасно использован везде, где используется std::map. ------------------------------------------- Вот при защищенном наследовании - там да, там уже отношение иное. Но на то оно и защищенное. Защищенное наследование для того и делают защищенным, что бы явно подчеркнуть: "я не являюсь им, я лишь умею все, что умеет он". Так что отношения между классами вполне соответствуют задумке разработчика.
0
|
|||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|||
| 02.02.2015, 23:17 | |||
) - protected/private наследование - 'implemented by", а не "is a". Но при открытом то наследовании писанины то всё равно меньше)
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 02.02.2015, 23:26 | |||
|
Он может ничего принципиально не изменяя, лишь добавить в интерфейс ещё какой нибудь метод, например. Поэтому, в отдельных ситуациях есть смысл подумать о последствиях, а потом забить на правила, и делать как проще и удобнее.
0
|
|||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||
| 02.02.2015, 23:29 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 02.02.2015, 23:32 | |
|
0
|
|
| 02.02.2015, 23:33 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 02.02.2015, 23:36 | ||
|
что бы вызывающая сторона работала именно с адаптером, а не с тем зоопарком, который он адаптирует. Поэтому, в плане использования, вызывающую сторону совершенно не парит: от чего он там унаследовался, или чего он там агрегировал.
0
|
||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||
| 02.02.2015, 23:44 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 02.02.2015, 23:53 | ||
|
которая позволяет получить профит быстрее и проще - это вы называете "не к месту"? Даже несмотря на то, что в тех случаях, когда так делают, наследник правомерно сохраняет отношение "является", просто потому, что может быть использован везде, где может использован базовый класс? Тем не менее, по вашему это все равно нарушает некую каноничную оо-религию? Лично я вертел все эти религии, если следование их канонам ничего не укрощает и не облегчает, а только создает проблемы. Поэтому, предлагаю не развивать диалог в религиозном русле. Только практика, только реальный профит.
0
|
||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|||
| 03.02.2015, 00:03 | |||
|
Добавлено через 2 минуты ) использовать для этого public inheritance.
0
|
|||
|
|
||||||
| 03.02.2015, 00:06 | ||||||
|
Как то однажды мне захотелось определить свой тип данных, строку с функционалом std:string и переопределить в нем лиши оператор ввода. Выбрал наследование. Так действительно вроде проще. И весь функционал std::string сберегся. Вот такой код был:
Кликните здесь для просмотра всего текста
0
|
||||||
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
||
| 03.02.2015, 08:38 | ||
да при закрытом наследовании кода будет ровным счетом столько же, сколько при композиции да, при реализации типа данных не сильно отличного от имеющегося, к примеру реализуем авто сортируемый вектор из вектора, то ту наследование позволяет сберечь нервы и время, при реализации адаптеров вроде стэк и очередь выгоды от наследования перед композицией не будет никакой - они равнозначны в данном случае!
0
|
||
| 03.02.2015, 08:38 | |
|
Помогаю со студенческими работами здесь
60
Шифрование "Лозунговым методом" (кому интересно) В чем интересно загвоздка???интересно разобраться!
Задача для любителей поломать голову Открыта вакансия Программиста 1С - кому интересно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|