Возможный дубликат:
Лучше ли в С++ передавать значение или передавать постоянную ссылку?
Мне известно о различиях при передаче по значению, указателе и ссылке в С++, и я бы рассмотрел возможность передачи объектов по значению (вместо ссылки на const) в С++ почти всегда ошибкой программирования.
void foo(Obj o); ... // Bad
void foo(const Obj &o); ... // Better
Единственный случай, когда я могу подумать о том, где целесообразно передавать значение вместо ссылки на const, является то, где объект меньше, чем ссылка, и поэтому передача по значению является более эффективной.
Но, конечно, это то, что компиляторы построены для определения?
Почему С++ действительно нуждается в передаче по значению И передается по ссылке const, и - компиляторы разрешают автоматически конвертировать вызов (и из) ссылки на константу, если это необходимо?
(Кажется, что существует 100-значный вопрос о вызове на С++, спрашивающий о различиях между (скажем) значением и ссылкой - но я не мог найти тот, который спросил "почему?".)