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



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.

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

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

Имя*

E-mail:*

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