Ошибки, баги, вопросы - страница 3305
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это я что-то не понимаю, или тут действительно что-то не так?
Результат:
Конструктор с параметрами по умолчанию используется как конструктор по умолчанию (первый вызов A::A(int)), хотя в документации сказано, что это не так:
"Конструктор, все параметры которого имеют значения по умолчанию, не является конструктором по умолчанию." https://www.mql5.com/ru/docs/basis/types/classes#default_constructor
Второй вызов A::A(int) (из B::B(int) ) устанавливает значение a1, которое после "исчезает".
Это я что-то не понимаю, или тут действительно что-то не так?
Результат:
Конструктор с параметрами по умолчанию используется как конструктор по умолчанию (первый вызов A::A(int)), хотя в документации сказано, что это не так:
"Конструктор, все параметры которого имеют значения по умолчанию, не является конструктором по умолчанию." https://www.mql5.com/ru/docs/basis/types/classes#default_constructor
Второй вызов A::A(int) (из B::B(int) ) устанавливает значение a1, которое после "исчезает".
Тут, конечно, грабли от разработчиков MQL.
Спасибо.
А если другие параметры вызова A() зависят от вычислений внутри B::B() ?
Я дико извиняюсь, а что за хреновина с версией 3660 (судя по названию файла)? Никогда такого не было...
Я дико извиняюсь, а что за хреновина с версией 3660 (судя по названию файла)? Никогда такого не было...
Антивирус добрался до агентов?
Спасибо.
А если другие параметры вызова A() зависят от вычислений внутри B::B() ?
А если другие параметры вызова A() зависят от вычислений внутри B::B() ?
Конструкторы вызываются строго снизу-вверх: от родителя к потомкам.
Тогда, похоже, никак.
Т.е., для родительских классов, если мы не планируем создавать их объекты, фактически имеет смысл только конструктор по умолчанию (или выполняющий, вопреки документации, его роль конструктор со всеми параметрами по умолчанию)?
Т.е., для родительских классов, если мы не планируем создавать их объекты, фактически имеет смысл только конструктор по умолчанию (или выполняющий, вопреки документации, его роль конструктор со всеми параметрами по умолчанию)?
На случай, если в потомке надо определять параметры для инициализации родителя, я бы делал метод инициализации в родительском классе, объявив его как protected.
Собственно, так и делал.
Но, думается, на такой вызов конструктора, как у меня выше, компилятор должен выдавать ошибку или хотя бы предупреждение о бесполезности кода, а не делать вид, что всё хорошо, тем самым внося трудноуловимые ошибки.