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 подскажет развёрнутый ответ в реальном времени.