Поскольку другие ответы предполагают что-то другое, и на самом деле не пытаются ответить на вопрос, вот моя попытка:
Так какой подход лучше?Это зависит от того, как вы определяете запретить копирование ?
Если вы хотите запретить копирование другим пользователям (только классам и функциям, не являющимся друзьями), а друзьям и функциям-членам можно копировать, тогда второй подход - это путь.
Если вы хотите запретить копирование всем (друзьям, не-друзьям, функциям-членам), то единственным подходящим решением является первый подход.
Обратите внимание, что второй подход не запрещает копировать друзей и функции-члены (то есть вызывать функции копирования) . 1
1.Если вы не определите их правильно во втором случае, то копирование не будет работать, как ожидалось, но это совсем другое.Но дело в том, что второй случай не мешает вызывать функции копирования.Компилятор не генерирует никаких сообщений об ошибках.