Size: a a a

2020 May 09

DC

Denis Chernikov in pro.cxx
И да, насчёт final... Понятно что оно делает, но есть конкретный пример острой нужды в этом ключевом слове для класса?.. (Допустим, метод ещё с натяжкой, но представимо)
источник

АК

Александр Караев... in pro.cxx
Denis Chernikov
И да, насчёт final... Понятно что оно делает, но есть конкретный пример острой нужды в этом ключевом слове для класса?.. (Допустим, метод ещё с натяжкой, но представимо)
Острая нужда - запретить наследование
источник

DC

Denis Chernikov in pro.cxx
Александр Караев
Острая нужда - запретить наследование
А какая острая нужда в этом запрете?
источник

AN

Alexander N in pro.cxx
Denis Chernikov
А какая острая нужда в этом запрете?
Контейнеры stl не наследуются корректно
источник

АК

Александр Караев... in pro.cxx
Denis Chernikov
А какая острая нужда в этом запрете?
Выше ж писали - исключить ошибки полиморфной работы с невиртуальным деструктором
источник

DC

Denis Chernikov in pro.cxx
Alexander N
Контейнеры stl не наследуются корректно
Как так? Они же тоже контейнеры, и имеют полное право быть родителями...
источник

AN

Alexander N in pro.cxx
Denis Chernikov
Как так? Они же тоже контейнеры, и имеют полное право быть родителями...
Насколько я помню за неимением виртуального деструктора
источник

DC

Denis Chernikov in pro.cxx
Александр Караев
Выше ж писали - исключить ошибки полиморфной работы с невиртуальным деструктором
А для неполиморфного наследования?..
источник

DC

Denis Chernikov in pro.cxx
*тоже обсудили выше
источник

AN

Alexander N in pro.cxx
Denis Chernikov
А для неполиморфного наследования?..
Что имеется в виду под неполиморфным наследованием?
источник

АК

Александр Караев... in pro.cxx
Переслано от Constantine Drozdov
Именно про это придумали базовое правило "любой класс должен либо быть final, либо иметь protected, либо виртуальный деструктор"
источник

DC

Denis Chernikov in pro.cxx
Alexander N
Что имеется в виду под неполиморфным наследованием?
Когда нам на самом деле не требуется виртуальный деструктор. Мы используем наследника напрямую, и никогда не подразумеваем его под ссылкой на родителя
источник

DC

Denis Chernikov in pro.cxx
Александр Караев
Переслано от Constantine Drozdov
Именно про это придумали базовое правило "любой класс должен либо быть final, либо иметь protected, либо виртуальный деструктор"
Хорошее правило, но не всегда актуально, я считаю
источник

АК

Александр Караев... in pro.cxx
Denis Chernikov
Когда нам на самом деле не требуется виртуальный деструктор. Мы используем наследника напрямую, и никогда не подразумеваем его под ссылкой на родителя
Это ещё одно правило, о котором нужно помнить. Нет защиты от стрельбы в ногу, да и если не ошибаюсь, нарушает принцип подстановки Лисков
источник

AN

Alexander N in pro.cxx
Извращения ради можно ли вызывать деструктор родителя напрямую из деструктора наследника?
источник

DC

Denis Chernikov in pro.cxx
Александр Караев
Это ещё одно правило, о котором нужно помнить. Нет защиты от стрельбы в ногу, да и если не ошибаюсь, нарушает принцип подстановки Лисков
Согласен, но форсить запрет такой возможности... Странно как-то
источник

АК

Александр Караев... in pro.cxx
Alexander N
Извращения ради можно ли вызывать деструктор родителя напрямую из деструктора наследника?
Нельзя, он рекурсивно вызовет деструктор родителя снова..
источник

АК

Александр Караев... in pro.cxx
Denis Chernikov
Согласен, но форсить запрет такой возможности... Странно как-то
Всё зависит от кодстандарта, принятого в локальной среде разработчиков
источник

DC

Denis Chernikov in pro.cxx
Александр Караев
Всё зависит от кодстандарта, принятого в локальной среде разработчиков
Согласен
Но вот пишу я библиотеку... И не уверен, что захочу ставить final в ней где-либо
источник

АК

Александр Караев... in pro.cxx
Denis Chernikov
Согласен
Но вот пишу я библиотеку... И не уверен, что захочу ставить final в ней где-либо
Это нормально :)
источник