PVD -- Fournir un destructeur virtuel

De RAD Studio
Aller à : navigation, rechercher

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(){};
 };

Voir aussi