Купи
😂😂😂
Купи
Мне слух режет когда вместо шаблона говорят дженерик Думаю скоро привыкну
Burado
Эт не вместо.
Burado
Просто шарписты и джависты так говорят, ибо в их ЯП так называется.
Vladislav
Просто шарписты и джависты так говорят, ибо в их ЯП так называется.
неудивительно, ведь в шарпе/джаве именно дженерики, там нет шаблонов
Burado
Эт да.
доня.
то есть ты всерьёз считаешь что множественное наследование реализации - это нормально и надо так делать? мда
Burado
Есть такое, но я бы не сказал, что прям большая разница.
Купи
Просто шарписты и джависты так говорят, ибо в их ЯП так называется.
Я про джавистов и говорил Но я так понял я что-то упустил и чушь сказал
Adobe
Просто шарписты и джависты так говорят, ибо в их ЯП так называется.
Ну как то надо находить соприкосновения, принцыпы то одни и те же, терминология только разная. Но совсем чуть чуть.
Vladislav
можно показать пример, когда множественное наследование имплементации реально полезно?
доня.
то есть ты всерьёз считаешь что множественное наследование реализации - это нормально и надо так делать? мда
и это в 2017 когда все поняли что вообще наследование (не говоря даже о множественном) создаёт не меньше проблем чем решает
Adobe
generic - runtime template - compile time, что то вроде этого. ну и тележка сверху
Dr. Friedrich
Любопытно, что в dash документации нет даже упоминания interface, когда он в c++ есть, по крайней мере в VisualStudio. Да и куда ни глянь, редко где приводится
interface это COM-фича, в стандартном C++ такого ключевого слова нет. Документация верна; в портабельном коде не стоит этим пользоваться.
Adobe
В принципе не плохо, по моему
Adobe
(говорю не из-за моего c# бэкграунда)
Dr. Friedrich
У них там просто #define interface class, по-моему. А код дополнительно анализируется какой-то тулой, чтоб эти интерфейсы оборачивать в TLB.
Vladislav
В принципе не плохо, по моему
непортабельные расширения - "В принципе не плохо"? Что вообще тогда плохо в этом мире?
Dr. Friedrich
Ну наверно не совсем так, там нельзя private определять и реализацию
По-моему, совсем так. Ты можешь что угодно наделать в этом «интерфейсе», а отвечать потом будешь перед TLB и COM-инфраструктурой. С точки зрения С++ этот код будет валидным.
Dr. Friedrich
Хотя может, конечно, ты пишешь на C++/CLI или C++/CX. Там есть настоящие интерфейсы. Одна проблемка — это не настоящий С++ :)
Dr. Friedrich
Погодь, это уже не interface, а какой-то __interface.
Adobe
Разве что потом это GCC сбилдить
Adobe
ага, я упустил деталь
Dr. Friedrich
Ещё более глубокие глубины ада.
Dr. Friedrich
Я бы такое в современном коде не советовал использовать. Придерживайся стандарта, это максимально безопасно.
Vladislav
Ещё более глубокие глубины ада.
есть objC++, вот уж где ад
Dr. Friedrich
Много есть всяких кадавров, собранных из C++ и других языков :)
Adobe
Я бы такое в современном коде не советовал использовать. Придерживайся стандарта, это максимально безопасно.
Да так то, ничто не мешает написать class ISomething И сделать его абстрактным, так что нафиг не надо, в принципе
Adobe
есть objC++, вот уж где ад
ObjectiveC то уже страшноват на вид
Adobe
Ну наверно фича не просто так в языке есть, вопрос в том, как и когда применять
Adobe
И то верно. Но мне кажется, что выделить абстрактный интерфейс как что то отдельное - идея неплохая
Adobe
Не, это я понял. Я имею ввиду, что не стоит это делать хорошо не подумав
доня.
ну и зачем там множественное наследование?
Adobe
То есть, я имел ввиду, что одинарное наследование - думать один раз, множественное - 10 и больше
Anonymous
ну и зачем там множественное наследование?
class basic_string_stream : public std::basic_istream, public std::basic_ostream
доня.
я не спорю что оно может быть сделано через множественное наследование я не верю что оно там нужно
Adobe
Наверно ведь есть какие то определенные ситуации, когда это оправданно, но я сомневаюсь, что их просто найти, скажем, интуитивно
доня.
даже обычное наследование почти не применимо, а уж множественное наследование - тем более
Adobe
даже обычное наследование почти не применимо, а уж множественное наследование - тем более
Мне кажется, это какой то вопрос вкуса, что ли, или метода мышления, иначе споров на эту тему было бы, наверно, намного меньше
Anonymous
Купи
Слышал отзывы не очень про неё
Anonymous
Не знаю скачал решил поделиться
доня.
Мне кажется, это какой то вопрос вкуса, что ли, или метода мышления, иначе споров на эту тему было бы, наверно, намного меньше
так споров-то особо и нет, время когда наследование считалось нормальным решением в дизайне прошло, сейчас норма - избегать наследования
Adobe
Adobe
Хорошая штука
Anonymous
Хорошая штука
про чё там?
Adobe
про чё там?
Патерны ооп, применимые к производству игр
Adobe
Я только начал читать
Adobe
Если надо, есть на английском
Adobe
Anonymous
Патерны ооп, применимые к производству игр
самый главный паттерн при производстве игор и так все знают. денег мало
Anonymous
паттерн номер 2 - игор давно больше чем игроков
Adobe
Вот уж конечно
Dmitry
Там так, собственно, и написано.
🦥Alex Fails
#book #c #gamedev #learn
🦥Alex Fails
#patterns #gamedev
🦥Alex Fails
#gamedev #patterns
Berkus
Berkus
у обжектив си синтаксис конечно сильно укушен смолтоком, и от этого ууу
Anonymous
не,неочень,маленькая очень, я там даже работу м файлами не встретил
Крылатый
Ну блин.
Крылатый
Оксана читайте правила чата, пожалуйста!
Крылатый
Вакансии постятся через @AlexFails .
Крылатый
Здесь ведь сугубо технические дискуссии...
Anonymous
а где всякие вакансии и обсуждение офесного планктона?
🦥Alex Fails
а где всякие вакансии и обсуждение офесного планктона?
В пине есть специальный линк для этого
🐙 Antony
дело не в инкапсуляции, просто во-первых множественное наследование реализации сломано, а единичное наследование в большинстве случаев хуёво описывает связи в системе, а во-вторых дизайн построенный на наследовании реализации нерасширяем так что да, в идеале интерфейсы и композиция
Есть места где множественное наследование ну прям напрашивается. Например делаете вы обработчик сообщений. В зависимости от чего-то там, у вас на вход могут сообщения приходить по разным протоколам, уходить по другим протоколам. Ну и напрашивается - сдалть базовый класс, сделать N классов принимающих сообщения, M классов отправляющих сообщения. Множественным наследованием всё это связать и получить NxM классов. Но проблема в том, что вам необходимо наследоваться от базового класса виртуально. Это может быть ощутимым ударом по производительности, если в большинстве вызовов используется именно базовый класс. Так что смотрите и выбирайте сами - между удобством и производительностью. Ну и общая рекомендация - если можно обойтись композицией вместо наледования - выбирайте композицию.
Yaroslav
А кто-нибудь знает с++ либу для punycode?
🐙 Antony
Есть места где множественное наследование ну прям напрашивается. Например делаете вы обработчик сообщений. В зависимости от чего-то там, у вас на вход могут сообщения приходить по разным протоколам, уходить по другим протоколам. Ну и напрашивается - сдалть базовый класс, сделать N классов принимающих сообщения, M классов отправляющих сообщения. Множественным наследованием всё это связать и получить NxM классов. Но проблема в том, что вам необходимо наследоваться от базового класса виртуально. Это может быть ощутимым ударом по производительности, если в большинстве вызовов используется именно базовый класс. Так что смотрите и выбирайте сами - между удобством и производительностью. Ну и общая рекомендация - если можно обойтись композицией вместо наледования - выбирайте композицию.
Ну и да, можно следать без виртуального наследования, ценой роста бинарника: class base; class left: base; template <class Left> class right: Left; class fin final: right<left>; вместо class base; class left: virtual base; class right: virtual base; class fin final: left, right;
Anatoly
Там нет возможности множественного наследования реализации
Anatoly
в шарпе