destructeur et méthodes virtuelles
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| struct S0
{
...
virtual void Close();
virtual ~S0() { Close(); }
};
struct S0D: S0
{
...
virtual void Close() { ...; S0::Close(); }
}; |
J'ai une méthode virtual Close() dans une classe de base qui est appelée par son destructeur. La classe dérivée surcharge cette méthode Close() en faisant un traitement spécifique puis appelle la méthode Close() parente. Il me semble que c'est une manière assez classique de coder.
La problème survient quand on "oublie" de surcharger le destructeur de la classe dérivée. En fait je trouve assez pompant de devoir répéter le même code dans chaque destructor des classes dérivées, à savoir
Code:
virtual ~S0_derived() { Close(); }
Quelles sont vos habitudes de conception dans ce genre de cas ?
Merci.