Выбор ответа Middle Правило 0/3/5 спрашивают часто обновлено

Правило нуля

Вопрос

В чём суть правила нуля?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Не объявлять специальные функции, а владение поручить членам (vector, uniqueptr). Если каждый член сам умеет копироваться, перемещаться и освобождаться, сгенерированные компилятором функции автоматически правильные.

Варианты ответа

  1. У класса не должно быть данных-членов, только методы и статические поля
  2. Все специальные функции объявляются = delete, а нужные пишутся явно
  3. Класс должен быть тривиально копируемым, чтобы копироваться через memcpy
  4. Не объявлять специальные функции, а владение поручить членам (vector, unique_ptr)правильный ответ

Разбор

Если каждый член сам умеет копироваться, перемещаться и освобождаться, сгенерированные компилятором функции автоматически правильные. Ручное управление прячут в маленькие RAII-обёртки.

  • Члены могут быть любыми, важно, кто ими владеет.
  • Удалять всё не нужно, нужно не писать лишнего.
  • Тривиальность здесь ни при чём: std::string нетривиален, но правило нуля для него работает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.