Особенности языка mql5, тонкости и приёмы работы - страница 215
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кстати, если объвить массив static X x[n]; и у X Есть к-тор, то сначала в нем все поля элементов обнулятся, даже private, и только потом вызовется к-тор. Поэтому нет никакого нарушения парадигмы ООП в том что private поля обнуляются.
А вот то, что конструктор не отрабатывал - это косяк.
Кстати, если объвить массив static X x[n]; и у X Есть к-тор, то сначала в нем все поля элементов обнулятся, даже private, и только потом вызовется к-тор. Поэтому нет никакого нарушения парадигмы ООП в том что private поля обнуляются.
Отлично. Получается, что обнуление идет ДО конструктора, а посему все корректно. Спасибо!
посмотрел на свои изыскания в MQL5, бывает и хуже, я даже так историю в индикаторе по нескольким ТФ подкачиваю:
в оператор for много что можно записать )))
Не встречал вызов void-функции в операторе for. Остальные варианты довольно часто попадаются.
Забыл добавить, что если в классе есть нетривиальные поля (объекты), то после zero-init всего объекта для таких полей будет вызван их default c-tor.
Читаем:
The effects of value initialization are:
Читаем про default-initialized:
UB!
То, что тебе компилятор инициализирует нулями, ни о чем не говорит, сегодня инициализирует, а завтра, после очередного обновления....
Читаем:
The effects of value initialization are:
Читаем про default-initialized:
UB!
То, что тебе компилятор инициализирует нулями, ни о чем не говорит, сегодня инициализирует, а завтра, после очередного обновления....
Мой пост "Забыл добавить...." писался как дополнение к предыдущему посту:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
mktr8591, 2021.11.18 18:15
@A100
Если вспомнить, что mql порожден от C++, то там оба эти примера (их аналоги) хорошо работают, потому что в этих классах нет конструкторов (т.е. есть имплицитный конструктор):
Пример в C++:
Так что если в структуре /классе нет const полей, то логика работы корректная.
В нем рассматривалась определенная ситуация - когда в классе нет пользовательских конструкторов и есть неудаленный имплицитный конструктор. В этом случае пункт 1 процитированный вами, не подходит.
Применяется пункт "2) if T is a class type with a default constructor that is neither user-provided nor deleted (that is, it may be a class with an implicitly-defined or defaulted default constructor), the object is zero-initialized and the semantic constraints for default-initialization are checked, and if T has a non-trivial default constructor, the object is default-initialized;""
Так что все сходится.
Читаем:
The effects of value initialization are:
Читаем про default-initialized:
UB!
То, что тебе компилятор инициализирует нулями, ни о чем не говорит, сегодня инициализирует, а завтра, после очередного обновления....
Упс. не правильно прочитал. В этом случае:
2) if T is a class type with a default constructor that is neither user-provided nor deleted (that is, it may be a class with an implicitly-defined or defaulted default constructor), the object is zero-initialized and the semantic constraints for default-initialization are checked, and if T has a non-trivial default constructor, the object is default-initialized;Отлично. Получается, что обнуление идет ДО конструктора, а посему все корректно. Спасибо!
Не встречал вызов void-функции в операторе for. Остальные варианты довольно часто попадаются.
в 3-й параметр оператора for можно записать все что душе угодно, по сути оператор for может заменить оператор if() с {.....}
ЗЫ: еще видел макросы вида
в 3-й параметр оператора for можно записать все что душе угодно, по сути оператор for может заменить оператор if() с {.....}
ЗЫ: еще видел макросы вида
Точку с запятой убери, а то весь смысл потерялся)))
Точку с запятой убери, а то весь смысл потерялся)))
ага, точно - этот пример в макросах для того чтобы ; ставить при вызове макроса, мало макросами пользуюсь - нет практики