Это зависит от роли, которую классы играют в приложении. Если только
класс представляет значение, где идентичность не имеет значения, вы должны
Запрет копирования и назначения. Точно так же, если класс полиморфен. Как
Вообще правило, если вы размещаете объекты типа класса
динамически, это не должно быть копируемым. И наоборот, если класс
копируемый, вы не должны размещать его экземпляры динамически. (Но
Есть некоторые исключения, и это не редкость для динамического и
старайтесь не копировать большие объекты, даже если семантика доказывает обратное.)
Если вы разрабатываете низкоуровневую библиотеку, выбор менее очевиден.
Нечто подобное std::vector
может играть много ролей в приложении; в
в большинстве случаев копирование не подходит, но запрещение копирования
сделать его непригодным в тех немногих, где это уместно.