Const-ссылка в аргументе означает, что вы не изменили v
, поэтому вы можете передавать постоянные векторы (и временные значения!) В функцию.Это хорошо.
Постоянный возврат по значению является своего рода трюком.Это не позволяет вам писать что-то вроде этого:
vector3F v = get_vector();
vector3F w = v;
(v * 1.5) = w; // outch! Cannot assign to constant, though, so we're good.
Возврат значения-значения в виде константы проблематичен, поскольку он мешает ссылочным значениям в C ++ 11 и семантике перемещения:
move_me(v * 1.5); // cannot bind to `vector3F &&` :-(
Из-за этого и из-за того, что злоупотребление, подобное тому, которое я показал выше, довольно маловероятно, случайно произойдет, вероятно, лучше возвращать значение только как непостоянное.