Возможные дубликаты:
При каких обстоятельствах выгодно давать реализацию чистой виртуальной функции?
Зачем нужен чистый виртуальный деструктор в С++?
Компилятор не заставляет Child class реализовать деструктор, когда его Base имеет чистый деструктор virtual.
struct Base
{
virtual void foo () = 0;
virtual ~Base() = 0;
};
Base::~Base() {} // necessary
struct Child : Base
{
void foo() {}
//ok! no destructor needed to create objects of 'Child'
};
Смешная часть такова; компилятор скорее вынуждает Base определять тело деструктора. Это понятно. (Демо для справки)
Тогда какова цель с чистым дескриптором virtual в классе Base? (Можно ли запретить создание Base объектов?)