Avertissement du compilateur (niveau 3, désactivé) C4265

'classname' : la classe a des fonctions virtuelles, mais son destructeur non trivial n'est pas virtuel ; les instances de cette classe risquent de ne pas être détruites correctement

Lorsqu’une classe a des fonctions virtuelles, mais dispose d’un destructeur non virtuel, les objets du type peuvent ne pas être détruits correctement lorsque la classe est détruite par le biais d’un pointeur de classe de base.

Cet avertissement est désactivé par défaut. Pour plus d'informations, consultez Compiler Warnings That Are Off by Default.

L’échantillon suivant génère l’avertissement 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;
}