Las referencias no funcionan de la misma manera que los punteros: para los punteros puede tener 'punteros constantes' ( type * const p
) y 'puntero a constante' ( const type * p
o type const * p
).
Pero no tiene esto para referencias: una referencia siempre se referirá al mismo objeto; en ese sentido, puede considerar que las 'referencias' son 'referencias constantes' (de la misma manera que puede tener 'punteros constantes').
Por lo tanto, algo como 'type & const ref' no es legal. Solo puede tener 'referencia al tipo' ( type &ref
) y 'referencia al tipo constante' ( const type &ref
o type const &ref
; ambos son exactamente equivalentes).
Una última cosa: incluso si const type
suena más correcto en inglés, la escritura type const
permite una comprensión más sistemática de las declaraciones "de derecha a izquierda": int const & ref
se puede leer has 'ref es una referencia a un int constante'. O un ejemplo más complicado:, int const * const & ref
ref es una referencia a un puntero constante a un int constante.
Conclusión: en su pregunta, ambos son exactamente equivalentes.