В случае boost
правильным является boost::noncopyable
.
. Используется для предотвращения копирования объектов, подобных названию.Это имеет смысл, когда копирование приводит к очень сложной ситуации.Примером является класс, охватывающий концепцию дескриптора файла или сетевого подключения, как указано в документации .Проблемы возникают с освобождением / закрытием ресурса или файла.Если у вас много их копий, как бы вы справились?Вы могли бы использовать подсчет ссылок, но это трудно сделать правильно, если вы разворачиваете дескрипторы в некоторых местах ...
Лично я считаю его наиболее понятным и полезным при реализации одноэлементного шаблона, где вы действительно хотитеесть только один экземпляр, который в этом случае вы явно не хотите копировать.Singletons гарантируют, что только один экземпляр класса может быть создан для хранения некоторых глобальных ресурсов, например конфигурации системы.