возвращение объекта (но затем
объект скопирован с локального
переменная в функции, которая
потребляет память)
Оптимальным компиляторам может не потребоваться много времени для создания копии.
Вам также может понадобиться реализовать конструктор копирования и оператор присваивания перегрузки, в зависимости от содержимого вашего объекта.
возвращает указатель (но тогда у вас есть
запомнить, чтобы удалить его, в
код вызова, что странно)
Да, вы должны не забыть удалить его, поскольку вы не хотите рассматривать автоматическую очистку для этого вопроса.
возвращает ссылку (но это не так
возможно, потому что это было бы
ссылка на локальную переменную
функция, которая будет удалена как
как только функция заканчивается)
Возвращение ссылки полезно, когда вы возвращаете этот объект (* this) из функций-членов. В противном случае, как вы упомянули, его невозможно использовать.
В целом: это зависит от ваших потребностей, как описано выше, относительно того, какой из них выбрать, когда.