Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
То-есть в СБ отсутствие override к методу QuickSort() из CArrayObj() можно считать ошибкой?
Погремушка не обязательна. Она только для вашего удобства. Виртуальная функция будет переопределена независимо от наличия override.
Можете убрать из этого кода override и он будет работать точно так-же.
Но если вы допустите где-то опечатку (например, случайно указали немного другое имя функции), то при наличии override компилятор вам выдаст ошибку
А если там не будет override и вы допустите опечатку, то компиляция пройдет без ошибок, но вы пойдете дебажить потом.
Пару раз потратите время на дебаг на ровном месте и поймете, что с погремушкой сильно лучше, чем без нееВерно, это в справке полностью описано, но товарищ почему-то презрительно называет это погремушкой. Вангую, для него и варнинги тоже погремушки )) Процитирую справку:
Модификатор override
Модификатор override означает, что объявляемая функция обязательно должна переопределить метод родительского класса. Использование этого модификатора позволяет избежать ошибок при переопределении, таких как случайное изменение сигнатуры метода. Например, в базовом классе определен метод func, принимающий в качестве аргумента переменную типа int:
class CFoo
{
void virtual func(int x) const { }
};
Далее метод переопределяется в наследуемом классе:
class CBar : public CFoo
{
void func(short x) { }
};
Но по ошибке тип аргумента изменяется с int на short. Фактически, в этом случае уже происходит не переопределение, а перегрузка метода. Действуя в соответствии с алгоритмом определения перегруженной функции, в определенных ситуациях компилятор может выбрать метод, определенный в базовом классе, вместо переопределенного метода.
Чтобы избежать подобных ошибок, к переопределяемому методу следует явно добавлять модификатор override.
class CBar : public CFoo
{
void func(short x) override { }
};
Если при переопределении будет изменена сигнатура метода, компилятор не сможет найти в родительском классе метод с точной такой же сигнатурой и выдаст ошибку компиляции:
'CBar::func' method is declared with 'override' specifier but does not override any base class method
Верно, это в справке полностью описано, но товарищ почему-то презрительно называет это погремушкой. Вангую, для него и варнинги тоже погремушки ))
Это было всего лишь предположение. Для того чтобы более опытные товарищи объяснили, что это не так…
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Учёба. Классы. Нужна помощь.
Alexey Viktorov, 2024.12.17 16:57
Наверное override просто погремушка для понимания при чтении кода.
И когда доходчиво объяснили
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Учёба. Классы. Нужна помощь.
Alexey Viktorov, 2024.12.17 17:52
Так и я о том-же. Погремушка она и есть погремушка никому не нужная. Просто для удобства чтения.
Ну да… После добавления вашего сообщения, согласен. Это когда пишешь что-то своё, для предупреждения ошибки… Полезно.Тут нет погремушки override
Вот я о чём…
Могу предположить, что override в компиляторе появилось позже, чем была написана эта часть СБ.
Могу предположить, что override в компиляторе появилось позже, чем была написана эта часть СБ.
Да собственно не очень важно по какой причине нету. Я понял полезность этой, пусть всё-же будет погремушкой, полезной погремушкой… И это главное. Без понимания, пользоваться чем либо, бывает очень опасно.
Да собственно не очень важно по какой причине нету. Я понял полезность этой, пусть всё-же будет погремушкой, полезной погремушкой… И это главное. Без понимания, пользоваться чем либо, бывает очень опасно.
Не знаю, обрадуетесь Вы или нет, но в MQL5 относительно недавно появились ещё и другие "погремушки", как то: final, delete.
Ещё есть такая штука, как шаблоны проектирования. У Мохамеда есть целый цикл статей. Но как по мне, там практически нет примеров, что уменьшает полезность материала. В паттернах также можно найти частое использование полиморфизма...
Коллеги, вы как, дружите с шаблонами проектирования в рамках MQL5? ))
У Мохамеда есть целый цикл статей. Но как по мне, там практически нет примеров, что уменьшает полезность материала.
Не перестаю удивляться его статьям. В том-то и дело, что нет никаких примеров. Выглядит как тупой рерайтинг общедоступной информации из гугла.
Берешь любую книгу с паттернами, забираешь оттуда абстрактные примеры, вносишь небольшие правки в код, что бы его мог переварить MQL компилятор и статься готова. Можно через chatgpt пропустить описание, что бы не было прям слово в слово с книгой из которой ты это позаимствовал. Ну и схемы самому перерисовать что бы внаглую картинки не воровать и не спалить по картинке оригинальный материал.
Хотя, я думаю, там даже оригинальный материал не нужен. Такое можно просто сгенерировать. В этом случае потребуется немножко понимания (или находчивости), что бы нарисовать схемы для сгенерированного материала.
А знаете, что самое смешное? Человек, который учит шаблонам проектирования, в других статьях пишет процедурный код. Почему же ты шаблоны свои не используешь, архитектор?
Я конечно допускаю, что это авторский материал, а не рерайтинг. В этом случае очень неудачная и супер сухая подача. Такая подача, как уже говорилось, уменьшает умножает на ноль ценность материала.
[edit]
Если убрать шаблоны проектирования, то остальные статьи (того автора) наверное выглядят как какие-то обычные статьи и не дают особо поводоа для критики. Но те шаблоны проектирования,.. да еще и на фоне остальных его статей... Вызывают недоумение и вопросы, скажем так.
Коллеги, вы как, дружите с шаблонами проектирования в рамках MQL5? ))
Шаблон Singleton использую в нескольких местах, и это, пожалуй, единственный шаблон, который мне реально принёс пользу. С другими как-то не сложилось...
e
Шаблон Singleton использую в нескольких местах, и это, пожалуй, единственный шаблон, который мне реально принёс пользу. С другими как-то не сложилось...
Мне фабрика классов несколько раз пригождалась.