Empezar a utilizar PC-Lint en una base de código existente (miedo y temor).Destructores para clases similares a la interfaz C++
Una cosa que se queja es la siguiente:
class IBatch
{
public:
virtual void StartBatch() =0;
virtual int CommitBatch() =0;
};
cual, como otra clase deriva de este usarlo como una interfaz
base class 'IBatch' has no destructor
Entonces, la pregunta: cuando se crea Interfaz clases como las anteriores, ¿siempre incluye un destructor virtual? ¿Por qué? (Se trata de un estilo o un error de codificación?)
EDIT: En caso de haber dicho que no espero ni quiero que el usuario de IBatch de destrucción, que es un consumidor de un servicio sólo, a través de esta interfaz para algunos clase de implementación externa (si eso marcara la diferencia)
Como se dijo, necesita un DTor virtual. Como nota al margen: las interfaces COM en cambio se basan en 'Release()', que es un método virtual que puede redireccionar a un DTor derivado "apropiado". – peterchen