Форум программистов, компьютерный форум CyberForum.ru

Удаление объектов(деструкторы) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
13.02.2013, 19:53     Удаление объектов(деструкторы) #1
Можете нормально объяснить как пользоваться деструкторами.
Допустим мне нужно удалить созданный объект в классе, КАК????????
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.02.2013, 20:09     Удаление объектов(деструкторы) #2
никак. объекты сами удаляются, когда их время жизни заканчивается.
явный вызов деструктора иногда применяется, но это скорее исключение, чем правило, и у тебя вряд ли эти случаи
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
14.02.2013, 13:19     Удаление объектов(деструкторы) #3
вообще обычно в деструкторах прописываю очищение памяти из под указателей, выделенной в конструкторе, ну или либо какието другие адэкватные вещи, которые никак не удаляются после того как

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
их время жизни заканчивается.
Либо, что чаще всего в деструкторах прописывают вызов функции которая рекурсивно или итеративно подчищает память из под некоторых видов классов/структур типа деревья, графы и т.п.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.02.2013, 22:35     Удаление объектов(деструкторы) #4
Цитата Сообщение от MrGrig Посмотреть сообщение
Либо, что чаще всего в деструкторах прописывают вызов функции которая рекурсивно или итеративно подчищает память из под некоторых видов классов/структур типа деревья, графы и т.п.
В деструкторе можно прописать много всего. Вопрос был "как с помощью деструктора удалить объект класса", а не "что прописывать в деструкторе". Так вот тут присутствует распространённое не понимаение. Некоторые считают, что деструктор удаляет объект.

Деструктор присутствует у объекта не для того, чтобы его удалять, а для того, чтобы производить "деинициализацию" перед удалением. Какая это деинициализация? - всякая в зависимости от того, что за класс. Может в нём нужно освобождать память, на которую хранятся указатели в полях класса, а может ещё что. Может в нём требуется уменьшать статический счётчик объектов, может закрывать какие-нибудь открытые классом файлы, может уменьшать так называемые, "счётчики ссылок"... да мало ли что писать можно в деструкторе? Вопрос был не об этом.

Добавлено через 5 минут
Ответ: явный вызов деструктора в большинстве случаев не нужен.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
14.02.2013, 23:40     Удаление объектов(деструкторы) #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ответ: явный вызов деструктора в большинстве случаев не нужен.

Не по теме:

Вот и разработчики разные, наверное, такого же мнения были... Разработчики разного рода движков интернет-браузеров, некоторых игр и некоторого остального софта, которые память жрут и проц грузят совсем не по-детски.


Добавлю к словам Kuzia domovenok, что чтобы понимать как пользоваться деструкторами, для начала нужно хорошо понять объекты, к которым эти деструкторы планируется применять. Поймешь как строил - поймешь как аккуратно разобрать.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.02.2013, 00:01     Удаление объектов(деструкторы) #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
не понимаение

Не по теме:

блин, как я мог написать это?


Цитата Сообщение от daslex Посмотреть сообщение
Вот и разработчики разные, наверное, такого же мнения были... Разработчики разного рода движков интернет-браузеров, некоторых игр и некоторого остального софта, которые память жрут и проц грузят совсем не по-детски.
Я рад, что разработчики со мной согласны. А ты, должно быть, в своих программах ни разу не используешь new и delete, а наоборот, используешь свой самописный менеджер памяти, который память не жрёт, проц не грузит, деструкторы вызывает явно и вообще работает, лучше чем какие-то нубы из Майкрософта могли придумать. "Кому нужны эти new и delete.."
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.02.2013, 00:03     Удаление объектов(деструкторы) #7
добавлю сарказм не по делу от непонимания или незнания что явный вызов деструктора, это:
SomeClass::~SomeClass(); а не delete someClassPtr; Врятли тот, кто в состоянии написать
интернет-браузер или игру не умеют работать с памятью. Кроме этого, в нормальном коде стоит стремится к уменьшению количествa явных вызовов delete, предоставив это спец объектам вроде смартпоинтеров. В таких
случаях явных вызов delete не нужен.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
15.02.2013, 00:59     Удаление объектов(деструкторы) #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А ты, должно быть
Чего не знаешь - того не говори.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 01:17     Удаление объектов(деструкторы)
Еще ссылки по теме:

C++ Добавление и удаление объектов с перегрузкой операторов '+' и '-'
C++ Удаление объектов структуры из файла по условию
C++ Удаление динамических объектов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.02.2013, 01:17     Удаление объектов(деструкторы) #9
Цитата Сообщение от daslex Посмотреть сообщение
Чего не знаешь - того не говори
Если ты их и правда используешь, то ты вряд ли вызываешь деструктор сам. Прочти слова DU.
Yandex
Объявления
15.02.2013, 01:17     Удаление объектов(деструкторы)
Ответ Создать тему
Опции темы

Текущее время: 04:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru