Официальный сайт студ.городка НГТУ
Программирование и БД » Зачем нужен виртуальный деструктор? 

#1  15.10.06 22:44

Day
Профиль

Зачем нужен виртуальный деструктор?

сябж

Offline

#2  16.10.06 02:40

Re: Зачем нужен виртуальный деструктор?

чтобы вызывались соответствующие деструкторы для производных объектов

Код: cpp:

class One
{
virtual ~One();
};
 
class Two : public One
{
~Two();
};
 
...
One *p = new Two();
delete p;                     // вызовется Two::~Two            
...


Но если бы One::~One был невиртуальным, то

Код: cpp:

...
One *p = new Two();
delete p;                     // вызовется One::~One ..    
...

.. что в общем случае приведет к некорректному разрушению объекта  типа Two

Исправлено Fatboy (16.10.06 02:42)

Offline

Программирование и БД » Зачем нужен виртуальный деструктор? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.090 сек.
Выполнено 11 запросов.