Возможные дубликаты:
При каких обстоятельствах выгодно давать реализацию чистой виртуальной функции?
Зачем нужен чистый виртуальный деструктор в С++?
Компилятор не заставляет 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
объектов?)