Поделиться через


Предупреждение компилятора (уровень 3, выключен) C4265

"classname": класс имеет виртуальные функции, но его нетривиальный деструктор не является виртуальным; экземпляры этого класса могут быть неправильно деструктированы

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

Это предупреждение отключено по умолчанию. Дополнительные сведения см. в разделе Compiler Warnings That Are Off by Default.

Следующий пример приводит к возникновению ошибки C4265:

// C4265.cpp
// compile with: /W3 /c
#pragma warning(default : 4265)
class B
{
public:
   virtual void vmf();

   ~B();
   // try the following line instead
   // virtual ~B();
};   // C4265

int main()
{
   B b;
}