Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы ведете речь о создании интерфейса. Но что мешает и без абстрактных классов это делать, создавая для виртуальных функций тело в виде одного return? Или это совсем не одно и то же.
Сам понял чего сказал? ;-)
Да.
Ничего. Но тогда контроль за имплементацией интерфейса полностью ложится на ваши плечи, а с чисто виртуальными функциями за этим отлично следит компилятор.
Можно пример? Правда, не уловил разницу.
Хз правильный ли синтакс, надеюсь будет понятно
Хз правильный ли синтакс, надеюсь будет понятно
Спасибо за пример. Вся затея, как понимаю, чтобы была ошибка компиляции. Не понял только, в каких случаях это может быть полезно? Понимаю, что это как-то должно помочь не делать ошибки. Ну как с const, например. Но если с const все ясно почти сразу, стоит только начать писать. То с абстрактным такого понимания нет. Ведь если Virtual сделать return изначально, то можно будет создать объект такого типа. Но что хорошего, если теперь компилятор будет ругаться на такие объекты?
Программеры 100% не зря придумали интерфейсы. Но в чем явное удобство - не уловил.
Программеры 100% не зря придумали интерфейсы. Но в чем явное удобство - не уловил.
Смысл интерфейса в том числе строго следить за тем, чтобы он был имплементирован в потомках.
Конкретно, чтобы не получить pure virtual call во время исполнения, вобщем вполне можно обходиться и без абстрактных классов, но, как я уже говорил, следить за полной реализацией интерфейсов придется самому.
Как по мне, если какую-то ошибку из времени исполнения можно перенести на время компиляции, это надо делать.
Смысл интерфейса в том числе строго следить за тем, чтобы он был имплементирован в потомках.
Смысл интерфейса в том числе строго следить за тем, чтобы он был имплементирован в потомках.
Конкретно, чтобы не получить pure virtual call во время исполнения, вобщем вполне можно обходиться и без абстрактных классов, но, как я уже говорил, следить за полной реализацией интерфейсов придется самому.
Как по мне, если какую-то ошибку из времени исполнения можно перенести на время компиляции, это надо делать.
Я, видимо, что-то пропустил. В MQL есть (появились) интерфейсы? Дайте ссылку, плиз. Или расскажите подробней.
В википедии хорошо описано, я процитирую никто не против :)
Можно заметить, что интерфейс, с формальной точки зрения, — это просто чистый абстрактный класс, то есть класс, в котором не определено ничего, кроме абстрактных методов. Если язык программирования поддерживает множественное наследование и абстрактные методы (как, например, C++), то необходимости во введении в синтаксис языка отдельного понятия «интерфейс» не возникает. Данные сущности описываются с помощью абстрактных классов и наследуются классами для реализации абстрактных методов.
Однако поддержка множественного наследования в полном объёме достаточно сложна и вызывает множество проблем, как на уровне реализации языка, так и на уровне архитектуры приложений.
В некоторых организациях запрещают использовать множественное наследование в С++, чтобы программисты не стреляли себе в ногу, а организации не теряли время == деньги.
Правда писать нужно больше и когда лень берет свое неопытные прогеры начинают возмущатся и истерить, мол неудобно.
Но когда приходит время поддержки, доработки, отладки, то все встает на свои места, ибо написание кода это 1/4 от всей разработки.