Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата El Scorpio:
Oleg_SK, скорее всего, это недоработка конкретного компилятора »
El Scorpio, Это не недоработка, это так и нужно (читайте RFC). Виртуальный деструктор должен быть объявлен специально. Чтобы он объявлялся автоматически, нужно чтобы он был объявлен виртуальным в одном из базовых классов.
Код: Выделить весь код
class vA
{
  virtual ~vA() {clog << "vA::~vA()\n";}
};

class A
{
  ~A()  {clog << "A::~A()\n";}
}

class vB : public vA
{
  ~vB() {clog << "vB::~vB()\n";}
};

class B : public A
{
  ~B() {clog << "B::~B()\n";}
}

// испытываем:
vA* va = new vB();
delete  va;
// вызовет ~vB(), ~vA()

A* a = new B();
delete  a;
// вызовет ~A()

Отправлено: 09:35, 12-06-2010 | #6