PVD -- Fournir un destructeur virtuel
Remonter à Audits C++
Description
PVD détecte les classes avec des méthodes virtuelles ayant des destructeurs non virtuels ou n'ayant pas de destructeurs.
Vous devez déclarer un destructeur virtuel à chaque fois que la classe a au moins une fonction virtuelle. Avoir des fonctions virtuelles indique qu'une classe est censée agir comme une interface aux classes dérivées. Quand c'est le cas, un objet d'une classe dérivée peut être détruit via un pointeur sur la base.
Si le destructeur de Base n'était pas virtuel, le destructeur de Dérivé n'aurait pas du être appelé - avec vraisemblablement de mauvais effets, tels que l'échec de libération des ressources possédées par Dérivé.
Incorrect
class Base{
public:
virtual method() = 0;
};
Correct
class Base{
public:
virtual method() = 0;
virtual ~Base(){};
};