Referências não funcionam da mesma maneira que ponteiros: para ponteiros, você pode ter 'const pointers' ( type * const p
) e 'ponteiro para const' ( const type * p
ou type const * p
).
Mas você não tem isso para referências: uma referência sempre se refere ao mesmo objeto; nesse sentido, você pode considerar que 'referências' são 'referências const' (da mesma maneira que você pode ter 'const ponteiros').
Portanto, algo como 'type & const ref' não é legal. Você pode ter apenas 'referência ao tipo' ( type &ref
) e 'referência ao tipo constante' ( const type &ref
ou type const &ref
; ambos são exatamente equivalentes).
Uma última coisa: mesmo que const type
pareça mais correta em inglês, a escrita type const
permite uma compreensão mais sistemática das declarações "da direita para a esquerda": int const & ref
pode ser lida se 'ref é uma referência a uma constante int'. Ou exemplo mais complicado:, int const * const & ref
ref é uma referência a um ponteiro constante para uma constante int.
Conclusão: na sua pergunta, ambos são exatamente equivalentes.