Mediumнаследование
Чем public, private и protected наследование отличаются?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Тип наследования определяет, как члены базы видны в производном и его клиентах.
class Base { public: void f(); };
// public: интерфейс базы доступен — D ЯВЛЯЕТСЯ Base (is-a)
class D1 : public Base {};
D1 d; d.f(); // OK
// protected: интерфейс базы виден только наследникам
class D2 : protected Base {};
// D2 d; d.f(); // ошибка
// private: все члены базы private в производном (has-a через inheritance)
class D3 : private Base {};- public — производный ЯВЛЯЕТСЯ базой, конвертируется в базу (для полиморфизма);
- private/protected — база «спрятана», реализация через inheritance (для mixin’ов);
- По умолчанию для
class— private, дляstruct— public.
В новом коде — public для полиморфизма, private как composition-replacement.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.