Киберфак – бесплатно скачать презентации PowerPoint, лекции, рефераты, шпоры, курсовые cyberfac logo
cyberfac.ru
На главную | Регистрация | Вход
  Статьи  
Главная » Статьи » Информатика » Высокоуровневые методы информатики и программирования

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

Полезная статья? Пожалуйста, поставьте "+"
К содержанию

Деструктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).

Практически всегда деструктор делается виртуальным. Делается это для того, чтобы корректно (без утечек памяти) уничтожались объекты не только заданного класса, а и любого производного от него. Например: в игре уровни, звуки и спрайты могут создаваться загрузчиком, а уничтожаться — менеджером памяти, для которого нет разницы между уровнем и спрайтом.

Пусть (на C++) есть тип 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()!!

Однако, если сделать деструктор Father виртуальным:
class Father
{
public:
Father() {}
virtual ~Father() {}
};

class Son : public Father
{
private:
int* buffer;
public:
Son() : Father() { buffer = new int[1024]; }
~Son() { delete[] buffer; }
};


вызов delete object; приведет в последовательному вызову деструкторов ~Son и ~Father.

В Delphi все классы порождаются от TObject, деструктор которого является виртуальным, поэтому нет необходимости самому объявлять деструкторы любых объектов виртуальными.


Категория: Высокоуровневые методы информатики и программирования | Добавил: Ni-Cd (01 Декабря 2011)
Просмотров: 1331 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
  Полезные материалы  

В нашем каталоге файлов можно найти много полезной информации. Также советуем заглянуть в каталог статей: в нем есть полезные статьи по темам: Экономика предприятия, Общая экономика, Финансы и Кредит, также Словарь терминов по экономике, Маркетинг, Бухучет и Мировая экономика
Также есть полезная страница Факультеты МИФИ, которая расскажет о том, какие есть в МИФИ факультеты.
Меню
 

Навигация
Высокоуровневые методы информатики и программирования [28]
Информатика и программирование [34]
Информационные системы в экономике [36]
Языки программирования и методы трансляции [15]
Алгоритмизация и программирование [61]
 

Поиск
 

Онлайн
Онлайн всего: 1
Гостей: 1
Пользователей: 0
 

Статистика


Рейтинг@Mail.ru

 


2007 - 2022 © Ni-Cd. All Rights Reserved