В этой статье мы рассмотрим, для чего в C++ нужны конструкторы и деструкторы. Проблема с инициализацией Как только мы начали работать с классами, то есть объединили данные и код в одном месте, то тут же возникает проблема с инициализацией переменных, то есть с заданием исходных значений. Например, в языке С мы можем создать переменную и тут же задать ей значение: int x = 5; Эта строка прямого действия — как она написана, так она и выполняется. В C++ так сделать нельзя, потому что объявление класса — это просто описание свойств класса, а выполнение возможно только в экземпляре класса. То есть...
В предыдущей части я был приятно удивлён тем, что для создания экземпляра класса на стеке не требуется оператор new, как в других языках: Всё происходит как обычное объявление переменной нужного типа, и объект уже создан (на стеке), и даже вызван его конструктор. На третий день Зоркий Глаз увидел, что в C++ всё-таки используется new: MyClass* test = new MyClass(); Можно писать new MyСlass со скобками или без скобок, но про это позже. А пока про new. На деле оператор new выделяет память под объект из кучи...