виртуальный деструктор



Destructor

Автор ~WiZaRd задал вопрос в разделе Другие языки и технологии

Как работает виртуальный деструктор? что это? С++ и получил лучший ответ

Ответ от Ётепан Михалин[гуру]
деструктор осфобождает память, занимаемую тем или иным объектом и вызывается по окончанию функции, в которой создавался объект. Виртуальный деструктор возвращает память куче.
Источник: ну я типа программист:))

Ответ от Technoraptor[гуру]
Виртуальный деструктор отличается от обычного тем, что обычный освобождает память от объектов только заданного класса, а виртуальный - не только от объектов заданного, но и всех производных. И это очень удобно, поэтому виртуальные деструкторы использовать

Ответ от Technoraptor[гуру]
Виртуальный деструктор отличается от обычного тем, что обычный освобождает память от объектов только заданного класса, а виртуальный - не только от объектов заданного, но и всех производных. И это очень удобно, поэтому виртуальные деструкторы использовать предпочтительнее.
Пусть есть тип Father и порождённый от него тип Son:
class Father
{
public:
Father() {}
~Father() {}
};
class Son : public Father
{
public:
int* buffer;
Son() : Father() { buffer = new int[1024]; }
~Son() { delete[] buffer; }
};
Нижеприведённый код является некорректным и приводит к утечке памяти.
Father* object = new Son(); // вызывается Son()
delete object; // вызывается ~Father()!
Однако, если сделать деструктор Son виртуальным:
class Father
{
public:
Father() {}
virtual ~Father() {}
};
class Son : public Father
{
private:
int* buffer;
public:
Son() : Father() { buffer = new int[1024]; }
virtual ~Son() { delete[] buffer; }
};
вызов delete object; вызовет правильный деструктор класса Son.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Как работает виртуальный деструктор? что это? С++

как переделать формат zvq в мп3
Панель управления - параметры папок - вкладка Вид - Скрывать расширения для зарегистрированных
подробнее...

Как правильно установить две операционные системы?
Acronis OS Selector, который входит в состав Acronis Disk Director Suite, позволяет легко
подробнее...
спросили в GFriend Partition managers
Как отформатировать NTFS в FAT32? Какие программы желательно использовать?
Можешь скачать и воспользоваться абсолютно бесплатной и безопасной прогой - EASEUS PartitionMaster
подробнее...

Установка Windows 7 на ноутбук и разбиение дисков
Данная статья посвящена такому программному продукту как: Acronis Disk Director Suite. Здесь мы с
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Железо
что такое инициализация жесткого диска?
Обращение к контроллеру диска для определения его наличия в
подробнее...
спросили в Partition managers
как увеличить диск bootcamp на скриншоте?
стороними утилитами или обычной -сжать том и после смотреть - может сжать другой чтоб после
подробнее...
спросили в Железо Partition managers
Как объединить 2 раздела на диске в Windows 7 х64 (один раздел пустой на 2 ОС стоит)?
В стандартном Управлении дисками (Панель управления - Администрирование - Управление компьютером -
подробнее...
спросили в Сосна Короеды
Подскажите... пожалуйста...! Жук короед... ест сосну???
Сосна для него - как Чупа-Чупс
Он даже писаеться от
подробнее...

Когда возник макияж корпспейнт?
А давайте-ка я вам расскажу, что такое корпспэйнт как особое явление в тяжелой музыке, присущее в
подробнее...
спросили в Inheritance Стек
Реализовать в Delphi организацию работы СТЕКА.
Ну как минимум стараться передавать в процедуры и функции не переменные а указатели на них... в
подробнее...
Деструктор на Википедии
Посмотрите статью на википедии про Деструктор
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*