
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сегодня
override виртуального метода без прописывания virtual - это нормально?
Смотрите этот пост и 2 предыдущих
https://www.mql5.com/ru/forum/1111/page3307#comment_45894972
Смотрите этот пост и 2 предыдущих
https://www.mql5.com/ru/forum/1111/page3307#comment_45894972
Спасибо, прочел. Но так и не понял, почему отсутствие virtual разрешается.
Спасибо, прочел. Но так и не понял, почему отсутствие virtual разрешается.
«f» уже является виртуальным из базового класса.
Всем привет. Такой вопрос есть. Кто-нибудь пытался синхронизировать время из Market Watch с таймером советника, что бы секунды ровно шли? Актуально для панелей например.
А в теории это разве возможно? Как я понял, время от сервера транслируется вместе с котировкой, а значит есть транзакционные задержки, которые нестабильны.
Спасибо, прочел. Но так и не понял, почему отсутствие virtual разрешается.
Метод попадает в таблицу виртуальных функций при первом объявлении его с ключевым словом virtual. Далее метод остается виртуальным не зависимо от того, указываете ли вы virtual в производных классах. Вы не можете "убрать" метод из таблицы виртуальных функций, вы лишь можете запретить дальнейшее переопределение с попощью final.
После того обсуждения я никогда не указываю virtual при переопределении метода, но я всегда обязательно указываю override. Прошло больше 2х лет, как я перестал указывать virtual для методов, которые уже виртуальные из базового класса.
«f» уже является виртуальным из базового класса.
Непонятно, для чего дается такая вольность для написания virtual. Чтение кода не позволяет сразу понять, если бы не было использовано override.
После того обсуждения я никогда не указываю virtual при переопределении метода, но я всегда обязательно указываю override. Больше 2х лет, как я ни разу не указывал virtual для метода, который уже виртуальный из базового класса.
Для меня это плохая практика при чтении кода.
Для меня это плохая практика при чтении кода.
Почему плохая? Разве override не достаточно, чтобы понять что метод виртуальный (и перегруженный переопределенный)?
[edit] Если принять за правило обязательно указывать override, то я нахожу это очень удобным.