Если нужен пользовательский деструктор/копирующий ctor/copy assign — обычно нужны все три из-за владения ресурсом.
Разбор
- Классика: deep copy сырого указателя.
- В C++11 расширяется до Rule of Five.
- Часто лучше Rule of Zero + smart pointers.
- Копирование vs перемещение различайте.
Итог
Тройка защищает инварианты владения при копировании.