Duplicar posibles:
Is it better in C++ to pass by value or pass by constant reference?¿Por qué pasar un objeto por valor en C++
Soy consciente de las diferencias de paso por valor, puntero y referencia en C++ y Considero que pasar objetos por valor (en lugar de referencia constante) en C++ es casi siempre un error de programación.
void foo(Obj o); ... // Bad
void foo(const Obj &o); ... // Better
El único caso que puedo pensar en que podría ser apropiado para pasar por valor en lugar de referencia const es donde el objeto es menor que una referencia, y que pasa por el valor es por lo tanto más eficiente.
Pero, seguramente este es el tipo de cosas que los compiladores están diseñados para determinar?
¿Por qué C++ realmente necesita pasa por valor Y pasa por referencia constante, y - ¿pueden los compiladores convertir automáticamente la llamada a (y desde) una referencia constante si corresponde?
(Parece que hay 100s de C++ llamada cuestión de convención, preguntando acerca de las diferencias entre (por ejemplo) el valor y referencia - pero no pude encontrar uno que le preguntó "¿por qué?".)
¿Qué pasa cada vez que necesita una copia de todos modos? Añadir 'Obj o2 (o);' como primera línea? Eso parece bastante inútil. Además, mueve la semántica. – delnan
@delnan - Gracias. Normalmente hago lo que describes, ya que creo que es un detalle de implementación de la función que no debe formar parte de su firma externa. – Roddy
@Nemo. Si gracias. ¡Votado para cerrar! Lamentablemente, la mente de colmena es una herramienta de búsqueda mejor que la incorporada de SO ... – Roddy