Начиная использовать PC-Lint на существующей базе кода (страх и трепет).
Одна вещь, на которую он жалуется, следующая:
class IBatch
{
public:
virtual void StartBatch() =0;
virtual int CommitBatch() =0;
};
Что, когда другой класс вытекает из этого, чтобы использовать его как интерфейс
base class 'IBatch' has no destructor
Итак, вопрос: когда вы создаете классы интерфейса, подобные выше, вы всегда включаете виртуальный деструктор? Зачем? (это стиль или ошибка кодирования?)
EDIT: Должен был сказать, что я не ожидаю или не хочу, чтобы пользователь IBatch разрушал, они являются потребителем только сервиса, через этот интерфейс к некоторому внешнему классу реализации (если бы это имело бы значение)