Mediumrule-of-zero
Сформулируйте правило нуля (Rule of Zero).
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Правило нуля: класс не должен сам управлять ресурсами напрямую, а использовать члены, которые это делают (smart pointers, контейнеры, RAII-обёртки). Тогда компилятор автоматически сгенерирует корректные пять операций.
class Person {
std::string name;
std::vector<int> data;
std::unique_ptr<Address> addr;
// никаких пользовательских деструкторов/копий/move — всё работает автоматически!
};Преимущества: устраняет целый класс багов (забытый move ctor, утечки, исключения в деструкторе), меньше кода. Ручное управление нужно только для низкоуровневых классов-обёрток над ресурсами (как сам unique_ptr).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.