О Конструкторах и о деструкторах...

 

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

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

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

 
Конструктор необходим для инициализации членов класса (структуры), читай литературу по С++, на просторах в т.ч. Рунета информации полно.
 

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

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

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

 

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

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

 
ALXIMIKS:

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

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


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

 
hoz:

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

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

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

Примерно так.