Re[2]: Для чего нужны виртуальные деструкторы.
От: S D K Киргизия  
Дата: 27.11.01 03:55
Оценка:
Здравствуйте Tom, Вы писали:

Tom>>VC++ 6.0 при создании класса автоматически генерирует виртуальные деструкторы.

Tom>>Для этого явно есть веская причина. Предпологаю, что это связано с явным вызовом
Tom>>деструкторов. Если есть идеи — ответьте.

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

Пример

class A
{
public:
    virtual ~A()
    {
        printf("Delete A");
    }
};

class B:public A
{
        char * pszString;
public:
    B(){ pszString = new char[100];}
    virtual ~B()
    {
         delete [] pszString;
        printf("Delete B");
    }
};

....

A *pA = new B();

delete pA; // вызовится ~B
Удачи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.