|
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 36
|
||||||||||||
Наследование - вызов конструкторов и деструкторов01.11.2015, 02:04. Показов 6038. Ответов 53
Метки нет (Все метки)
Делаю два класса - предок и потомок:
Подскажите пожалуйста, почему во втором случае не вызвался деструктор класса-наследника??
0
|
||||||||||||
| 01.11.2015, 02:04 | |
|
Ответы с готовыми решениями:
53
Вызов лишних конструкторов и деструкторов в std::vector Задание с использованием конструкторов и деструкторов |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 07.11.2015, 14:10 | ||||
|
кто-то разработал базовый класс, заложив основу - дизайн. и, например, он определил ряд виртуальных функций-членов специально предназначенных для определения в наследниках. зачем это было нужно зависит от конкретной ситуации. хорошая новость в том, что на практике подобного рода грабельки жить не мешают. детали реализации чужого класса меня не интересуют (настолько, насколько это вообще возможно в несовершенном мире). с другой стороны, я не дергаю функционал базы в конструкторе своего наследника. обычно в этом просто нет необходимости.
0
|
||||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 07.11.2015, 14:38 | |
|
hoggy
Дело в том, что если нужно манипулировать именно поведением, то наследование избыточный механизм, потому что ещё и навешивает типовую метку. Если же NVI подразумевает создание подтипа, то неизбежно расширенный класс столкнётся с тем, что нужно детально знать базовый контракт, иначе легко провалить аксиоматику подтипа. В итоге: NVI не спасает от проблем наследования, но работа с открытыми виртуальными методами всегда более прозрачная.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 07.11.2015, 16:44 | |||||||||
|
он практичен, что значит прост в эксплуатации а его киллер фича - статика. компилятор обладает всей полнотой информации о типах, участвующих в иерархии наследования, что позволяет ему генерировать более эффективный код. например вот этот код:
ответ: потому что никаких виртуальных вызовов и не было. компилятор сумел оптимизировать виртуальный вызов до прямого. скажем так... с классическим паттерном "стратегия" у компиляторов все намного печальнее. можно ещё применить статическую стратегию на шаблонах. пожалуй это будет эффективно. но это уже тяжелая артиллерия. шаблоно-магия не всегда приемлема. NVI - это тупо "фабричный метод". наследники реализуют лишь мелкие не сильно значащие детальки. а основняк крутится в базе, и лишь время от времени тыркает наследников "уточнить мелочовку". и потом, что такое вообще "проблемы наследования" ? если речь идет о том, что приходится вникать в детали базовых классов, то это проблема их дизайна, а вовсе не наследования, как такового. можно же сделать так, что и не придется. это зависит от конкретных ситуаций, и конкретных классов.
0
|
|||||||||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|||
| 07.11.2015, 17:27 | |||
|
Открытое наследование ещё и прицепит новый тип, по существу создаст новый контракт.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 07.11.2015, 17:58 | |
|
0
|
|
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||
| 07.11.2015, 18:10 | ||
|
Но и Вы на вопрос не ответили. Ваш код под стратегии Александреску можно и без шаблонов переделать. Почему не стратегии?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 07.11.2015, 18:19 | ||
|
в отдельных ситуациях они - то, что доктор прописал. но они более сложны в плане понимания и эксплуатации. к тому же, они никак не избавят вас от ваших проблем с наследованием. просто раньше вам приходилось втыкать в базовый класс. а теперь - в класс стратегии. те же яйца, только сбоку.
0
|
||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||
| 07.11.2015, 18:30 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 07.11.2015, 18:35 | |||
|
которые определяет наследник. что такое "интерфейс деталей реализации" мне не понятно. однако сама фраза содержит внутреннее противоречие. следует отделять понятие интерфейса от деталей реализации, которые он инкапсулирует.
0
|
|||
|
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 36
|
||||||||
| 09.11.2015, 10:22 [ТС] | ||||||||
0
|
||||||||
|
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 36
|
||||||||
| 09.11.2015, 12:38 [ТС] | ||||||||
Но, кажется, я и без экспертов понял в чем дело...
0
|
||||||||
|
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 36
|
|
| 09.11.2015, 19:07 [ТС] | |
|
0
|
|
| 09.11.2015, 19:07 | |
|
Порядок вызова конструкторов/деструкторов Правильное использование конструкторов и деструкторов Разработка классов, создание конструкторов и деструкторов Ошибки в программе с использованием конструкторов/деструкторов Как реализовать набор конструкторов и деструкторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|