Junior — Senior
58
Ошибка компиляции при применении protected‑наследования
Условие задачи
Рассмотрим следующий пример: базовый класс B объявлен с виртуальным деструктором, а класс Child наследует его с модификатором protected. В функции checkChildB создаётся объект Child, но указатель объявлен как B*. Нужно понять, почему код не компилируется и в чём заключается проблема использования protected‑наследования в таком случае.
class B {
public:
virtual ~B() = default;
};
class Child : protected B {
};
void checkChildB() {
B* b = new Child; // ошибка компиляции
}