Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну не знаю :) у нас в конторе за написанный код типа
как минимум пожурят, и имхо, правильно сделают.
Повторюсь -- это сложный тип, требующий корректной инициализации при создании, если строку надо инициализировать -- это бага МТ5(4), однозначно.
Может еще размер массивов надо обнулять сразу после создания???
Ну не знаю :) у нас в конторе за написанный код типа
как минимум пожурят, и имхо, правильно сделают.
Прежде чем использовать переменную, ей необходимо присвоить значение (явно инициализировать). Или Вы не согласны?
Явная инициализация не подразумевает необходимость таковой непосредственно в момент ее объявления. Но если потом значение неинициализированной переменной будет использовано в каких-то вычислениях, то последствия непредсказуемы.
Вы меня пугаете, Рашид, при всем уважении.
У класса есть конструктор, в котором происходит начальная инициализация объекта и в том числе задание дефолтного значения, если это логично.
Если начальной инициализации не происходит, должен быть способ узнать, в адекватном ли состоянии находится объект. Со строкой гораздо более логично задание дефолного значения.
такая запись -- это паранойя, параноик априори не может писать нормальный код.
Так строки не инициализируются??
Так строки не инициализируются??
Вы меня пугаете, Рашид, при всем уважении.
У класса есть конструктор, в котором происходит начальная инициализация объекта и в том числе задание дефолтного значения, если это логично.
Если начальной инициализации не происходит, должен быть способ узнать, в адекватном ли состоянии находится объект. Со строкой гораздо более логично задание дефолного значения.
такая запись -- это паранойя, параноик априори не может писать нормальный код.
Так строки не инициализируются??
Читайте справку - https://www.mql5.com/ru/docs/basis/types/classes:
Если структура содержит переменные типа string и/или объект динамического массива, то компилятор назначает для такой структуры неявный конструктор, в котором производится обнуление всех членов структуры типа string и правильная инициализация для объекта динамического массива.
...
Конструкторы и деструкторы
Конструктор - это специальная функция, которая вызывается автоматически при создании объекта структуры или класса и обычно используется для инициализации членов класса. Далее мы будем говорить только о классах, при этом все сказанное относится и к структурам, если не оговорено иное. Имя конструктора должно совпадать с именем класса. Конструктор не имеет возвращаемого типа (можно указать тип void).
Определенные члены класса – строки, динамические массивы и объекты, требующие инициализации – в любом случае будут проинициализированы, независимо от наличия конструктора.
Жесть... Ну хотя бы знать буду.
А в структурах она тоже NULL будет?
Жесть... Ну хотя бы знать буду.
А в структурах она тоже NULL будет?
Просто сравните на NULL и все узнаете сами - Тип void и константа NULL:
Предопределенная константная переменная NULL имеет тип void. Она может быть присвоена переменным любых других фундаментальных типов без преобразования. Также допускается сравнение переменных фундаментальных типов со значением NULL
Пример:
//--- если строка не инициализирована, то присвоим ей наше предопределенное значение
if(some_string==NULL) some_string="empty";
Также NULL можно сравнивать с указателями на объекты, созданные при помощи оператора new.
Прежде чем использовать переменную, ей необходимо присвоить значение (явно инициализировать). Или Вы не согласны?
Явная инициализация не подразумевает необходимость таковой непосредственно в момент ее объявления. Но если потом значение неинициализированной переменной будет использовано в каких-то вычислениях, то последствия непредсказуемы.
Кстати о птичках.
И что нам на это ответит компилятор. А ответит от он следующее - '=' - illegal assignment use
Компилятор был не преклонен - '=' - illegal assignment use.
У меня вопрос - А что будет если программер (в данном случае я) не позаботится об инициализации переменных до их использования (поступив так как того требует компилятор и упустив этот момент в конструкторе)?
У меня вопрос - А что будет если программер (в данном случае я) не позаботится об инициализации переменных до их использования (поступив так как того требует компилятор и упустив этот момент в конструкторе)?
вопрос звучит от какого то новичка...
Ну так я примерно и подумал в свое время (Давно это было, вот припомнилось), а ведь хотел с горяча заявку писать. :)
Хотя до сих пор не пойму почему на уровне компилятора запрещено сразу инициализировать переменные.