Size: a a a

2021 February 24

ПК

Побитый Кирпич... in supapro.cxx
Для этого и применяют - один интерфейс, разное поведение
источник

NM

Nastya Medveda in supapro.cxx
Denis Paukaev
потому, что это не бесплатно
но получается что для правильного наследования (а приоритет метода в Derived class это правильное наследование) необходимо чтоб в базовом классе было это прописано явно. А разработчик не может предугадать как будут реализованы наследники когда пишет базовый класс.
источник

С

Скрыто in supapro.cxx
здесь же память выделяется не тем оператором что выше, а оператором из <new>
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
но получается что для правильного наследования (а приоритет метода в Derived class это правильное наследование) необходимо чтоб в базовом классе было это прописано явно. А разработчик не может предугадать как будут реализованы наследники когда пишет базовый класс.
реализация не важна
источник

DP

Denis Paukaev in supapro.cxx
Скрыто
здесь же память выделяется не тем оператором что выше, а оператором из <new>
там специально вставлен дебажный вывод
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
но получается что для правильного наследования (а приоритет метода в Derived class это правильное наследование) необходимо чтоб в базовом классе было это прописано явно. А разработчик не может предугадать как будут реализованы наследники когда пишет базовый класс.
Правильное наследование это когда не нарушается принцип подстановки Лисков, фсё
источник

DP

Denis Paukaev in supapro.cxx
наследование бывает разное)
источник

NM

Nastya Medveda in supapro.cxx
Denis Paukaev
широко применяется этот механизм в интерфейсах, когда в классе делают только чисто виртуальные функции, реализацию которых уточнят в наследнике
В интерфейсах с чисто виртуальными функциями положим (там заранее известно что все функции будутимплементированы в Derived, но в общем то случае функции могут быть и не чисто виртуальными.
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
наследование бывает разное)
Правильное и неправильное
источник

DP

Denis Paukaev in supapro.cxx
я бы не сказал что есть понятие правильное наследование или не правильное
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
В интерфейсах с чисто виртуальными функциями положим (там заранее известно что все функции будутимплементированы в Derived, но в общем то случае функции могут быть и не чисто виртуальными.
Так, и что?
источник

DP

Denis Paukaev in supapro.cxx
есть люди которые не тот вид наследования используют там, где не надо)
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
В интерфейсах с чисто виртуальными функциями положим (там заранее известно что все функции будутимплементированы в Derived, но в общем то случае функции могут быть и не чисто виртуальными.
и пусть будут, это норм
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Nastya Medveda
но получается что для правильного наследования (а приоритет метода в Derived class это правильное наследование) необходимо чтоб в базовом классе было это прописано явно. А разработчик не может предугадать как будут реализованы наследники когда пишет базовый класс.
Это не нужно предугадывать. Разработчик наследуемого класса видит, что виртуальное и что нет, и решает, подходят ли реализации из базы (если не чисто виртуальный метод) и нужно ли переопределять
источник

NM

Nastya Medveda in supapro.cxx
Ну то есть если мой код использует имплементации базового класса и без изменения в базовом классе невозможно реализовать работу в наследнике, то что-то с наследованием не так.
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Nastya Medveda
Ну то есть если мой код использует имплементации базового класса и без изменения в базовом классе невозможно реализовать работу в наследнике, то что-то с наследованием не так.
Или наследник не того хочет
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
Ну то есть если мой код использует имплементации базового класса и без изменения в базовом классе невозможно реализовать работу в наследнике, то что-то с наследованием не так.
Значит bad design у базового класса
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
Ну то есть если мой код использует имплементации базового класса и без изменения в базовом классе невозможно реализовать работу в наследнике, то что-то с наследованием не так.
если для реализации нужно менять код базового класса значит это обычно плохо реализованная иерархия классов )
источник

DP

Denis Paukaev in supapro.cxx
т.к. минимум противоречит OCP
источник

NM

Nastya Medveda in supapro.cxx
Побитый Кирпич
Значит bad design у базового класса
А как это может быть good design если неизвестно какие из функций захотят перегрузить?  (в-общем случае можно предположить, что все).
источник