11.2.2. Consejos para el paso de argumentos

Cuando se pasa un argumento a una función, lo normal debería ser pasarlo como una referencia constante. Aunque al principio puede parecer que sólo tiene ventajas en términos de eficiencia (y normalmente en diseño e implementación inicial no se tiene muy en cuenta la eficiencia), además tiene otras: como se podrá ver en el resto del capítulo, se requiere un constructor de copia para pasar un objeto por valor, y esto no siempre es posible.

La eficiencia puede mejorar substancialmente por este simple hábito: pasar un argumento por valor necesita una llamada a un constructor y otra a un destructor, pero si no se va a modificar el argumento, el hecho de pasarlo como una referencia constante sólo necesita poner una dirección en la pila.

De hecho, prácticamente la única situación en la que no es preferible pasar la dirección, es cuando provocará tales problemas a un objeto que pasar por valor es la única alternativa segura (en vez de modificar el objeto que está fuera del ámbito de la función, algo que el que llama a la función normalmente no espera). Ése es el tema de la siguiente sección.