FVector в основном имеет 3 поплавки, поэтому я хотел бы вернуться на адрес, а не копии.
Адрес электронной почты: Если вы хотите вернуть адрес, то почему вы вернете ссылку вместо этого? Ссылки не являются указателями.
(Удаляется, потому что вопрос был изменен, чтобы использовать слово «эталонный» вместо «адреса».)
Однако, я считаю, что результат расчета хранится на стек, правильно?
Это действительно зависит от того, что именно возвращает ваш operator-
. Вы не показываете нам, поэтому мы не можем точно знать, но если оператор просто возвращает FVector
(как следует), то ваш код не может скомпилировать, поскольку временный FVector
не может использоваться для инициализации FVector&
.
Как правило, ваш код основан на неправильном понимании того, что как-то плохо вернуть копию FVector
. Это не. Измените подпись функции на FVector GetDirectionFromCamera()
и дайте компилятору удалить избыточные копии.
Или результат, выделенный на кучу, потому что я немедленно возвращаю его?
No. Вы называете «кучу» только в том случае, если вы используете динамическое распределение.
Это зависит от сигнатур и поведения функций и операторов во втором примере. Итак, если они возвращают ссылку на объект, созданный в куче, вы в порядке. Если нет, вы не в порядке. –
Невозможно сказать, не зная, что возвращает 'operator-', но правильный ответ прост: верните копию, перестаньте пытаться оптимизировать крошечную стоимость копирования трех поплавков. [Keep It Simple, Stupid] (https://en.wikipedia.org/wiki/KISS_principle). –