Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаешь C++? MQL5 очень схож с ним, убедись в этом сам!
hoz
1936
hoz 2014.02.02 10:53 

 Пытаюсь понять причины использования данных операторов. Для чего канкретно они нужны? Читал в книгах и вообще на просторах Рунета, но не совсем въезжаю.

 Как я понял, если конструктор не задать явно, то происходит неявная инициализация. Тогда зачем задавать явно? Каково применение данных операторов? Есть ли необходимость в их применении?

P.S. Как начал изучение классов, у меня всё перепуталось... Вот и стараюсь въехать.

barbarian
339
barbarian 2014.02.02 11:08  
Конструктор необходим для инициализации членов класса (структуры), читай литературу по С++, на просторах в т.ч. Рунета информации полно.
Vadim Zhunko
5221
Vadim Zhunko 2014.02.02 11:10  

Это не операторы. Это такие методы (функции), которые вызываются автоматически.

Обычно в конструкторе класс инициализируем, а в деструкторе по необходимости деинициализируем.

Тут хороший учебник.

Sergey Dzyublik
4621
Sergey Dzyublik 2014.02.02 11:17  

Очень грубо говоря конструктор - это обычная функция, которая реализуется сразу после создания объекта класса (что-то типа OnInit и глобальной функции инициализации в MQL).

Аналогично и с деструктором - когда объект класса уничтожается (по ходу кода или с помощью delete) вызывается эта функция (ОnDeinit в MQL).

hoz
1936
hoz 2014.02.02 18:27  
ALXIMIKS:

Очень грубо говоря конструктор - это обычная функция, которая реализуется сразу после создания объекта класса (что-то типа OnInit и глобальной функции инициализации в MQL).

Аналогично и с деструктором - когда объект класса уничтожается (по ходу кода или с помощью delete) вызывается эта функция (ОnDeinit в MQL).


Как ни странно, но я это и сам понял когда читал книги. Но по скольку привык что раньше объявление сочеталось в инициализацией часто, то не обращал на это внимания. Получается в классах нельзя задавать явное значение переменные, а только тип, верно? И чтоб задать значения переменным класса нужно это делать в конструкторах соответствующих классов, так?

Vladimir Gomonov
8235
Vladimir Gomonov 2014.02.02 19:31  
hoz:

Как ни странно, но я это и сам понял когда читал книги. Но по скольку привык что раньше объявление сочеталось в инициализацией часто, то не обращал на это внимания.

Различайте объявления (1) типов и (2) экземпляров переменных. Инициализацией часто сопровождается объявления экземпляров. Объявления типов данных в языке mql4 вообще не было. Все простые типы изначально неявно объявлены разработчиками языка. Для переменных простых типов (int, double и т.п.), хранящих в качестве значения одно единственное число, инициализация очень проста и выполняется одним оператором присваивания. Для сложных (составных, структурных) типов, хранящих в своём теле целые наборы значений различных типов, инициализация не может быть такой же примитивной. Для удобства юзеров-программистов и были придуманы такие вот спец-функции (конструкторы и деструкторы).

Получается в классах нельзя задавать явное значение переменные, а только тип, верно? И чтоб задать значения переменным класса нужно это делать в конструкторах соответствующих классов, так?

Примерно так.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий