Другие языки программирования и технологии
Зачем в ООП введены деструкторы класса?
С конструктором как бы всё ясно - предварительная установка свойств экземпляра, пулов методов и т. д., а деструктор? Возможно что, неполное выведение объекта из памяти? Или у них только декоративное назначение, чтобы не выносить код строгого порядка уничтожения куда-то ещё? Проще - есть ли что-то, что невозможно сделать без деструктора? Например в среде lazarus.
Конструктор создаёт объект в памяти, а деструктор его удаляет, тем самым освобождая ресурсы памяти.
Деструкторы нужны для освобождения памяти. Когда объект уничтожается, вместе с ним нужно уничтожить др. объекты, иначе останется мусор. Это необходимо например в C++, где нет сборщика мусора и потому возможны утечки памяти.
Деструктор нужен чаще всего для освобождение ресурсов, занятых объектом. Например, памяти. Или, если в классе есть элемент-файл, его надо закрыть и это должен делать деструктор. Но можно и без ресурсов - если ведется подсчет числа объектов какого-то класса, то логично добавить увеличение числа этих объектов в конструктор, а уменьшение - в деструктор.
Элементарные объекты не содержат созданных динамически объектов в памяти и деструктор можно опустить в описании класса. Но в реальном программировании сложных объектов это не так. Сложные динамические структуры должны быть очищены вместе с объектом: так избегают пресловутой "утечки памяти".Вот зачем нужен деструктор в классе.
Ещё одно примение описал Капитан Гугл : работа со статическими членами класса, действия при удалении объекта.
Ещё одно примение описал Капитан Гугл : работа со статическими членами класса, действия при удалении объекта.
Объекты часто получают память динамически, когда заранее неизвестно, сколько памяти нужно. Эта память - вне объекта.
И при уничтожении объект должен прибраться за собой.
Собственно, это одна из целей применения объектов - код, управляющий памятью, собран в одном месте. А сам класс можно рассматривать, как тип данных.
И при уничтожении объект должен прибраться за собой.
Собственно, это одна из целей применения объектов - код, управляющий памятью, собран в одном месте. А сам класс можно рассматривать, как тип данных.
деструкторы никакого отношения к ООП не имеют - это специфика языка.
PS. деструкторы могут быть обьектов но не классов.
PS. деструкторы могут быть обьектов но не классов.
Похожие вопросы
- ООП в c++. Совсем недавно познакомился с деструкторами класса и решил опробовать их на двумерном динамическом массиве.
- ООП. Как правильно организовать связь классов?
- Зачем нужно в с++ ООП? Ну классы, объекты? Если в си их не было, но язык исаользуется по сей день.
- Изучнние ООП - стоит ли сейчас?
- ООП. Стоит ли браться за ООП новичку в программировании?:
- вопрос по с++. Подскажите. Что такое онструкторы и деструкторы производных классов в С++??И правила их наследования
- ООП - зло. Ваше мнение.
- Объектно ориентированное программирование. (ООП)
- Что такое ООП для человека который не знает других парадигм
- Зачем нужно ООП?