LINUX.ORG.RU

История изменений

Исправление AntonyRF, (текущая версия) :

Да на расте в целом прекрасно обходятся без плюсового ООП и большие проекты пилят (гугл в помощь). Структуры + типажи + impl для структур и жить нормально можно. У заядлых ООПшников конечно мозг ломается и они не осиливают переключиться, но это проблема не раста. Самый простой утрированный пример, который приходит в голову, это создание UI элементов, во всяких Borland C++, там был базовый объект для контрола, от него наследовались базовые кнопки, а от них наследовался разработчик ручками и докручивал что нужно, уже не помню, но там 3-4 уровня наследования получалось.

В расте такое не прокатит, там нужно будет сделать типаж (читай интерфейс, но есть нюанс), который описывает общее поведение UI компонентов и еще один для кнопки (а может и одного типажа хватит, зависит от уровня упоротости). Так вот, ты можешь объявить функции в типаже, которые автоматически подключаться к твоей структурке описывающей объект, а можешь для каждой функции запилить свою реализацию.

Таким образом С++ тянет иерархию наследования, но может надо будет меньше чуток писать. А в Rust больше ручками пошевелить, но все проблемы с наследованием исчезают. Остальные концепции ООП, кажется, что легко реализуемы за исключением полиморфизма, в расте нужно прям точно указывать от куда метод вызывается - из условного типажа А или из типажа Б, иначе не скомпилирует. Такие вот дела.

Исходная версия AntonyRF, :

Да на расте в целом прекрасно обходятся без плюсового ООП и большие проекты пилят (гугл в помощь). Структуры + типажи + impl для структур и жить нормально можно. У заядлых ООПшников конечно мозг ломается и они не осиливают переключиться, но это проблема не раста. Самый простой утрированный пример, который приходит в голову, это создание UI элементов, во всяких Borland C++, там был базовый объект для контрола, от него наследовались базовые кнопки, а от них наследовался разработчик ручками и докручивал что нужно, уже не помню, но там 3-4 уровня наследования получалось.

В расте такое не прокатит, там нужно будет сделать типаж (читай интерфейс, но есть нюанс), который описывает общее поведение UI компонентов и еще один для кнопки (а может и одного типажа хватит, зависит от уровня упоротости). Так вот, ты можешь объявить функции в типаже, которые автоматически подключаться к твоей структурке описывающей объект, а можешь для каждой функции запилить свою реализацию.

Таким образом С++ тянет иерархию наследования, но может надо будет меньше чуток писать. А в Rust больше ручками пошевелить, но все проблемы с наследованием исчезают. Остальные концепции ООП, кажется, что легко реализуемы за исключением полиморфизма, в расте нужно прям точно указывать от куда метод вызывается из типажа А или из типажа Б, иначе не скомпилирует. Такие вот дела.