Также проблема в ромбе возникает при переопределении методов базового класса одним и более дочерними. В Ruby проблема множественного наследования решается при помощи примесей(mixins)
Спасибо за отличный урок, хотелось бы поподробнее разобраться, как на "железном" уровне происходит создание объекта, выделение памяти для него, а в частности - почему компилятор не может разобраться при множественном наследовании и не борется с дублированием переменных. Просто сразу приходит в голову - ну так пусть в случае колизии используют одну общую переменную). Также интересно как же все-таки достучаться до нужного метода/переменной в таких случаях.
Для ромбовидного наследования нужно использовать "виртуальное наследование", а насчет другого, то вроде по namespace можно и Д классу и к А классу. Сделайте видео еще про vtable, тема тоже популярная.
Вы что-то путаете. Функциональные языки - это lisp, Haskell, Erlang. Они используют лямбда-исчисление как математическую основу своей работы. Да и сказать, что в C нет ООП - это слукавить. В C есть структуры, которые позволяют реализовать и наследование, и полиморфизм, и бог знает что ещё. Просто это не так удобно, как с классами в плюсах.
Володя - ты космос!
В сишарпе все просто, там запрещено множественное наследование, вот и решение проблемы
В Java тоже нельзя множественное наследование, однако это не решение проблемы
Также проблема в ромбе возникает при переопределении методов базового класса одним и более дочерними. В Ruby проблема множественного наследования решается при помощи примесей(mixins)
Спасибо за отличный урок, хотелось бы поподробнее разобраться, как на "железном" уровне происходит создание объекта, выделение памяти для него, а в частности - почему компилятор не может разобраться при множественном наследовании и не борется с дублированием переменных. Просто сразу приходит в голову - ну так пусть в случае колизии используют одну общую переменную). Также интересно как же все-таки достучаться до нужного метода/переменной в таких случаях.
Валерий Шинкаренко Видео про это уже записано. Подождите немного.
Все супер ,но я все ждал реальный пример. Например как правильно обойти замыкание и тд.
у меня все классы получаются Г
Для ромбовидного наследования нужно использовать "виртуальное наследование", а насчет другого, то вроде по namespace можно и Д классу и к А классу.
Сделайте видео еще про vtable, тема тоже популярная.
Thomas Morgan Ещё не сделано, но уже записал видео про позднее связывание (динамическую типизацию). Про виртуальные таблицы тоже запишу.
C разрешает мн. наследование? разве это не функциональный язык, без ООП?
Вы что-то путаете. Функциональные языки - это lisp, Haskell, Erlang. Они используют лямбда-исчисление как математическую основу своей работы. Да и сказать, что в C нет ООП - это слукавить. В C есть структуры, которые позволяют реализовать и наследование, и полиморфизм, и бог знает что ещё. Просто это не так удобно, как с классами в плюсах.
В плюсах класс iostream использует ромбовидное наследование.
Каким образом можно реализовать множественное наследование в Си, если там нет классов?
а если там нет классов, если ли там ООП?
никаким, или писать на плюсах
класс Г
Учите Python в нем нет таких проблем!
Володя из ПТУ что ли?